반응형

문제 링크: https://www.acmicpc.net/problem/1439 

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net

<문제 풀이> 그리디 알고리즘

 

연속된 숫자를 한 번에 뒤집을 수 있기 때문에, 먼저 연속된 숫자들을 하나로 합쳐줍니다.

그리고 남은 숫자들 중에서 개수가 더 적은 숫자를 하나씩 뒤집어주면 됩니다.

 

0001100

-> 010

-> 000 (1번)

 

<C++소스코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false);
    string s; cin >> s;
    char c = s[0];
    for (int i = 1; i < s.length(); i++) {
        if (c == s[i])s[i] = '.';
        else {
            c = s[i];
        }
    }
    int zero = count(s.begin(), s.end(), '0');
    int one = count(s.begin(), s.end(), '1');
    cout << min(zero, one);
    return 0;
}
cs
 

 

반응형

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 2283] 구간 자르기  (0) 2023.08.30
[백준 17521번] Byte Coin  (0) 2023.04.24
[백준 20365번] 블로그2  (0) 2023.04.23
[백준 20115번] 에너지 드링크  (0) 2023.04.22
[백준 1343번] 폴리오미노  (0) 2023.04.22

+ Recent posts