문제
1439번: 뒤집기
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모
www.acmicpc.net
코드
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main() {
string S;
cin >> S;
int zero = 0, one = 0, index = 0;
int temp1, temp2;
temp1 = stoi(S.substr(index, 1));
if (temp1 == 0)
zero++;
else
one++;
while (index < S.length() - 1) {
temp1 = stoi(S.substr(index, 1));
temp2 = stoi(S.substr(index + 1, 1));
if (temp1 != temp2) {
if (temp2 == 0)
zero++;
else
one++;
}
index++;
}
cout << min(zero, one);
}
풀이
1. 입력받은 문자열을 한자리씩 숫자로 임시 저장할 변수 temp1, temp2를 선언한다. 또한 0과 1 묶음이 몇개씩 등장하는지 기록하기 위해 zero와 one 변수를 0으로 선언한다.
2. 첫 번째 문자를 정수형으로 변환하여 temp1에 저장한 후, 해당하는 숫자가 0이라면 zero를, 1이라면 one을 증가시킨다.
3. index변수를 사용해서 문자열의 index번째 문자와 index+1번째 문자를 비교한다.
4. 비교한 두 문자가 다를 경우, index+1번째에 해당하는 숫자의 수(zero 또는 one)를 하나씩 증가시킨다.
5. 3~4번 과정을 index가 문자열길이-1보다 작을 동안 반복한다.
'코테 > Greedy' 카테고리의 다른 글
[C/C++] 나동빈 볼링공 고르기, Greedy (0) | 2023.02.07 |
---|---|
[C/C++] 나동빈 만들 수 없는 금액, Greedy (0) | 2023.02.07 |
[C/C++] 나동빈 곱하기 혹은 더하기, Greedy (0) | 2023.02.06 |
[C/C++] 나동빈 모험가 길드, Greedy (0) | 2023.02.06 |
[C/C++] 나동빈 1이 될 때까지, Greedy (0) | 2023.02.02 |