1. 문제풀이 방법
- 0과,1 의 그룹을 묶어서 더 그룹이 적은 쪽을 뒤집어 줘야 적은 횟수로 통일을 할 수 있다.
2. 주의사항
- 전 어려운 문제인줄 알았던게 문제를 잘못읽어서 연속된 두 숫자 이상 뒤집을 수 있다는 건줄 알았습니다;;
- 0010 의경우 1은 하나라서 못뒤집어서 앞에 00을 뒤집고 1110을 만든뒤 다시 111을 뒤집어 0000을 만들어야
되는 줄 알고 꽤나 머리를 굴렸는데....알고보니 매우 간단한...문제.......문제를 꼼꼼히 똑바로 읽자 !
3.나의 코드
include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int count0;
int count1;
int resultcount;
int main() {
string inputs;
cin >> inputs;
if (inputs[0] == '0') { count0++; }
else { count1++; }
int nows=inputs[0];
for (int i = 1; i < inputs.length(); i++) {
if (inputs[i] != nows) {
if (inputs[i] == '0') { count0++; nows = inputs[i]; }
else { count1++; nows = inputs[i]; }
}
}
cout << min(count0, count1) << "\n";
return 0;
}
'알고리즘 문제풀이 > 그리디' 카테고리의 다른 글
백준 8980 [C++] (0) | 2020.12.05 |
---|---|
백준 1969 : DNA (0) | 2020.03.24 |
백준 1138 (0) | 2020.02.28 |
백준 1049 (0) | 2020.02.23 |
백준 1946 (0) | 2020.02.23 |