728x90
https://www.acmicpc.net/problem/1439
1439번: 뒤집기
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모
www.acmicpc.net
문자열 S
모든 숫자를 전부 같게 만들려고 한다.
연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다.
0과 1의 그룹 개수를 카운팅 하고, 더 적은 애를 출력하도록 했다.
flag를 사용해서 0, 1의 시작과 끝을 구분하기 위해 사용했다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
string s;
cin >> s;
int one=0, two=0;
bool f1 =false, f2 = false;
for(int i=0; i<s.size(); i++){
if(s[i] == '0'){
if(f2) f2 = false;
if(!f1){ //0의 그룹 시작 부분 flag 꽂기
one++;
f1 = true;
}
}else{
//0의 그룹 flag가 꽂혀있는데 1이 들어오면 0 끝남
if(f1) f1 = false; //flag 뽑기
if(!f2){
two++;
f2 = true;
}
}
}
cout << min(one, two) << '\n';
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/c++] 9237번: 이장님 초대 (0) | 2022.07.09 |
---|---|
[백준/c++] 4796번: 캠핑 (0) | 2022.07.09 |
[백준/c++] 15881번: Pen Pineapple Apple Pen (0) | 2022.07.09 |
[백준/c++] 18238번: ZOAC 2 (0) | 2022.07.09 |
[백준/c++] 22864번: 피로도 (0) | 2022.07.09 |