[C++]백준1439번 뒤집기
오늘은 백준1439번 뒤집기 문제를 풀어보도록 하자.
실버5 짜리로 굉장히 EZ한 문제라고 할 수 있겠다요 :)
문제는 다음과 같다.
[접근법]
1. for문을 2번 돌려준다. 하나는 다 0이라고 가정했을 때, 또 하나는 다 1이라고 가정했을 때 최솟값을 구하는 것이다.
2. 먼저 다 1이라고 가정해볼 때, 0의 더미 갯수를 파악. 그리고 다음에는 다 0이라고 가정해볼 때, 1의 더미 갯수를 파악한다.
3. 그 후 최솟값을 도출해내면 끝 !
[코드]
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s;
bool flag = false;
int result = 0, tmp;
cin >> s;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '0') {
if (!flag) {
result++;
flag = true;
}
}
else {
flag = false;
}
}
tmp = result;
result = 0;
flag = false;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '1') {
if (!flag) {
result++;
flag = true;
}
}
else {
flag = false;
}
}
result = min(tmp, result);
cout << result << '\n';
return 0;
}