• toc {:toc}

문제 ν™•μΈν•˜κΈ°

풀이

  • 아이디어 1 변경될 λ•Œλ§ˆλ‹€ flip 을 1 μ”© μ¦κ°€μ‹œμΌœ ν’€μ΄ν•˜μž! num[0] 을 νƒ€κ²Ÿκ°’μœΌλ‘œ λ°›κ³  νƒ€κ²Ÿκ°’κ³Ό κ°™μ§€ μ•Šλ‹€λ©΄ flip 을 μ¦κ°€μ‹œν‚€κ³  νƒ€κ²Ÿκ°’μ„ λΉ„κ΅ν•œ κ°’μœΌλ‘œ κ΅ν™˜ν•œλ‹€.

문제 : 0001100 일 λ•Œ 0 β†’ 1, 1 β†’ 0 으둜 갈 λ•Œ 2 λ²ˆμ„ λͺ¨λ‘ μ„ΈκΈ° λ•Œλ¬Έμ— 풀이할 수 μ—†λ‹€.

  • 아이디어 2 κ·Έλ ‡λ‹€λ©΄ 0001100 μ—μ„œ 0 β†’ 1 일 λ•ŒλŠ” μ„Έμ§€ 말고 1 β†’ 0 으둜 κ°€λŠ” λ’· λΆ€λΆ„λ§Œ flip 을 μ¦κ°€μ‹œν‚€μž!

문제 : 100000 일 λ•ŒλŠ” flip 이 μ¦κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€.

  • 아이디어 3 0 κ³Ό 1 쀑 κ°œμˆ˜κ°€ 적은 수λ₯Ό μ„ νƒν•΄μ„œ ν•΄λ‹Ή λ­‰μΉ˜κ°€ νƒμ§€λœ 경우 flip 을 μ¦κ°€μ‹œν‚¨λ‹€.

문제 : λ­‰μΉ˜μ˜ μˆ˜κ°€ μ€‘μš”ν•œ 것이지 0 κ³Ό 1 의 κ°œμˆ˜κ°€ flip νšŸμˆ˜μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€.

  • 아이디어 4 0 λ­‰μΉ˜, 1 λ­‰μΉ˜λ₯Ό 각각 μ„Όλ‹€. num[0] 으둜 μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•˜κ³  ν•΄λ‹Ή λ­‰μΉ˜μ—μ„œ λ‹€λ₯Έ λ­‰μΉ˜λ‘œ λ„˜μ–΄κ°”μ„ λ•Œ ν•΄λ‹Ή λ­‰μΉ˜λ₯Ό μΉ΄μš΄νŠΈν•œλ‹€. λ­‰μΉ˜μ˜ 개수λ₯Ό μ „λΆ€ μΉ΄μš΄νŠΈν•œ ν›„ λ‘˜ 쀑 λ­‰μΉ˜μˆ˜κ°€ μž‘μ€ 수λ₯Ό λ°˜ν™˜ν•˜λ©΄ κ·Έ 값이 μ΅œμ†Œ flip μˆ˜κ°€ λœλ‹€.
#include <bits/stdc++.h>
using namespace std;
 
int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
 
    int flip = 0, one=0, zero=0;
    string num;
 
    cin >> num;
 
 
    char target;
 
    if(num.size() == one || num.size() == zero){
        cout << 0 << '\n';
        exit(0);
    }
 
 
    if(num[0] == '0') zero++;
    else one++;
    target = num[0];
 
    for(int i = 1; i < num.size(); i++){
        if(target != num[i]) {
            if(num[i] == '0') zero++;
            else one++;
            target = num[i];
        }
    }
 
    if(zero > one) flip = one;
    else flip = zero;
 
    cout << flip << '\n';
 
    return 0;
}