๋ฌธ์
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV19AcoKI9sCFAZN
๋ฌธ์ ์ดํด
- ์ด๊ธฐํ ์ํ(๋ชจ๋ bit๊ฐ 0)์์ ์๋ ์ํ๋ก ๋ณต๊ตฌํด์ผ ํ๋ค.
- ๋ณต๊ตฌํ ๋๋ bit ์ค ํ๋๋ฅผ ๊ณจ๋ผ 0 ๋๋ 1์ ๊ฒฐ์ ํ๊ณ , ํด๋น ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋๊น์ง ๋ฎ์ด์์์ง๋ค.
- ์ด๊ธฐํ ์ํ์์ ์๋ ์ํ๋ก ๋ณต๊ตฌํ ๋ ์ต์ ์์ ํ์๋ฅผ ๊ตฌํ๋ค.
์ ์ถ๋ ฅ ์์
- ์
๋ ฅ: 0011
0000์์ 3๋ฒ์งธ bit๋ฅผ ๊ณจ๋ผ 1๋ก ์ค์ ํ๋ฉด 0011์ด ๋๋ฏ๋ก, ์ถ๋ ฅ๊ฐ์ 1์ด๋ค. - ์
๋ ฅ: 100
000 → 111 → 100๋ก, ์ถ๋ ฅ๊ฐ์ 2์ด๋ค.
๋ฌธ์ ํ์ด
๐ ์ ๊ทผ
๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ์ด๊ธฐํ ์ํ์ ์๋ ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฒซ ๋ฒ์งธ bit๋ถํฐ ํ๋์ฉ ๋น๊ตํ๋ฉด ํด๊ฒฐํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ, ์ด ๋ฐฉ๋ฒ๋๋ก๋ฉด ์ด๊ธฐํ ์ํ ๋ณ์๋ฅผ ๋ง๋ค์ด์ ์๋ ์ํ์ bit ๊ธธ์ด๋งํผ 0์ ํ ๋นํด์ผํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ธธ์ด๊ฐ 50์ผ ๊ฒฝ์ฐ, 50๋ฒ 0์ ์ถ๊ฐํด์ผํ๋ ์ผ์ด ๋ฐ์ํ๋ค.
์ด ๊ณผ์ ์ ์๋ตํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด๋ณด์.
๐จ ๊ตฌํ
์ด๊ธฐํ ์ํ์ ์๋ ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๋น๊ตํ ์ ์๋ ๋ฐฉ์์ ๋ ์ฌ๋ฆด ์ ์๋ค.
bit๋ฅผ ํ ๋ฒ ์์ ํ ๋๋ ํด๋น bit๋ถํฐ ๋๊น์ง ์์ ๋๋ฏ๋ก,
์ด๊ธฐํ ์ํ์ ํ์ฌ bit๋ฅผ ๋ํ๋ด๋ ์์ ๋ณ์๋ฅผ ์์ฑํด 0, 1๋ก ๋ฐ๊พธ๋ฉด์ ์๋ ์ํ ๋ฉ๋ชจ๋ฆฌ์ ๋น๊ตํ ์ ์๋ค.
1. ์์ ๋ณ์(temp)์ ์ด๊ธฐ ์ํ๋ '0'์ด๋ค.
2. ์๋ ์ํ string์ ์ํํ๋ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ค.
- ์๋ ์ํ์ ํ์ฌ bit๊ฐ temp์ ๊ฐ์ผ๋ฉด, ๋ค์ bit๋ก ์ด๋ํ๋ค.
- ๋ค๋ฅด๋ฉด, temp๋ฅผ ๋ณ๊ฒฝํ๊ณ (0 → 1, 1 → 0) ๋ณ๊ฒฝ ํ์๋ฅผ ๋๋ฆฐ๋ค.
์ฝ๋
#include<iostream>
using namespace std;
int main() {
int T;
cin >> T;
for (int test_case = 1; test_case <= T; ++test_case) {
string origin;
int ans = 0;
char temp = '0';
cin >> origin;
for (char c: origin) {
if (c == temp) continue;
temp = c;
ans++;
}
cout << '#' << test_case << ' ' << ans << '\n';
}
return 0;
}
'๐ญ Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 15650๋ฒ: N๊ณผ M (2) (0) | 2024.10.28 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 15649๋ฒ: N๊ณผ M (1) (0) | 2024.10.28 |
[BOJ][C++] ๋ฐฑ์ค 2002๋ฒ: ์ถ์ (0) | 2024.06.14 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ๋คํธ์ํฌ (0) | 2024.06.04 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2024.06.02 |