[문제 링크]

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net


간단한 그리디 알고리즘 문제였다.

 

먼저 입력으로 주어지는 문자열에서 같은 숫자로 이루어진 묶음을 하나의 문자로 압축시켰다.

ex) 000/11/00 -> 0 1 0

 

이렇게 압축한 다음 보았을 때 0과 1중 그 개수가 더 적은 숫자를 뒤집는 것이 곧 최소한의 횟수가 된다는 것을 알 수 있다.


#include <iostream>
#include <string>
using namespace std;

int cnt[2];

int main(void)
{
	string S;
	cin >> S;

	char idx = '2';

	for (int i = 0; i < S.length(); i++)
		if (idx != S[i])
		{
			idx = S[i];
			cnt[S[i] - '0']++;
		}

	int ret = cnt[0] < cnt[1] ? cnt[0] : cnt[1];

	cout << ret << endl;

	return 0;
}

알고리즘 200일 프로젝트 - 129 day

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2212번: 센서  (0) 2020.08.19
백준 1041번: 주사위  (0) 2020.08.17
백준 2812번: 크게 만들기  (0) 2020.08.17
백준 9576번: 책 나눠주기  (0) 2020.08.15
백준 3109번: 빵집  (0) 2020.08.13

+ Recent posts