PS_Baekjoon
[백준 C++] 1439번 : 뒤집기
SMILELY
2023. 2. 27. 22:39
https://www.acmicpc.net/problem/1439
1439번: 뒤집기
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모
www.acmicpc.net
풀이 :
- 모든 숫자를 같게 만들기 위한 최소값을 구해야 함
- 연속된 0과 연속된 1의 갯수를 구하고 그 중 더 작은 수가 답
코드 :
#include <iostream>
using namespace std;
int main() {
int cntZero, cntOne;
string s;
cin >> s;
cntZero = cntOne = 0;
if(s[0] == '0'){ // for문을 1부터 시작해서 i-1값을 비교함
cntZero++; //i가 0일 때 out of bounds를 방지하기 위해 인덱스 0은 따로 고려
}else{
cntOne++;
}
for(int i=1; i<s.size(); i++){
if(s[i] == '0' && s[i-1] != '0'){ //연속되지 않을 경우 카운트
cntZero++;
}else if(s[i] == '1' && s[i-1] != '1'){
cntOne++;
}
}
cout << min(cntOne, cntZero) << endl; // 둘 중 최소값 출력
}