반갑습니다!

[백준] 1439 뒤집기 본문

알고리즘 문제 풀이

[백준] 1439 뒤집기

김덜덜이 2020. 9. 20. 17:44
1439번: 뒤집기
 
www.acmicpc.net

풀이

그리디로 해결할 수 있는 문제이다. 전체 문자열을 순회하면서 연속한 0의 개수와 연속한 1의 개수 중에서 더 작은 수가 정답이 된다.

코드

C++

#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;

    int zero = 0;
    int one = 0;

    if (s[0] == '0') zero++;
    else one++;

    for (int i = 0; i < s.length() - 1; i++) {
        if (s[i] != s[i + 1]) {
            if (s[i + 1] == '0') zero++;
            else one++;
        }
    }
    cout << (zero < one ? zero : one) << '\n';
    return 0;
}

Python3

s = input()

one = 0
zero = 0

if s[0] == '0':
    zero += 1
else:
    one += 1

for i in range(len(s) - 1):
    if s[i] != s[i + 1]:
        if s[i + 1] == '0':
            zero += 1
        else:
            one += 1

print(min(zero, one))