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 |