백준 문제/그리디

[백준] 1439번 뒤집기

dubu0721 2024. 12. 4. 21:31

문제: 1439번: 뒤집기

 

#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <iomanip> // setprecision을 사용하기 위한 헤더
#include <climits>

using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	string input;
	cin >> input;

	// 0으로만 이루어진 부분, 1로만 이루어진 부분의 개수를 각각 셈
	// 0으로만 이루어진 부분이 1로만 이루어진 부분의 개수보다 크다면? 
	// 1로만 이루어진 부분을 다 뒤집으면 됨
	// 반대도 마찬가지
	// 맞으면 좋겠다...

	int zeroCnt = 0;
	int oneCnt = 0;
	char prev = '-1';
	if (input[0] == '0') {
		zeroCnt++;
		prev = '0';
	}
	else {
		oneCnt++;
		prev = '1';
	}

	for (int i = 1; i < input.size(); i++) {
		if (input[i] == '1') {
			if (prev != '1') 
				oneCnt++;
		}
		else {
			if (prev!= '0') 
				zeroCnt++;
		}
		prev = input[i]; // 이전 값 갱신
	}
	cout << (oneCnt > zeroCnt ? zeroCnt : oneCnt) << "\n";


	return 0;
}

 

한 번에 맞아서 기분이 좋았다. 5일 뒤면 시험이라 티스토리 공부하느라 티스토리 이번주에 잘 못왔다.. 시험 끝날 때까지 잘 못 올 것 같긴 한데 아무튼 백준 문제 새로운거 풀 때마다 들려야겠다. 

 

사실 문제는 맨날 풀었는데 정리할 시간이 없어서 안 하긴 했다..

 

근데 오늘 문제는 쉬워서 뭐 더 설명할 것도 없다. 그냥 다음에 복습할 때 주석만 잘 보면 될 듯하다! 굳!!

'백준 문제 > 그리디' 카테고리의 다른 글

[백준] 8980번 택배  (0) 2024.12.05
[백준] 1744번 수 묶기  (0) 2024.11.15
[백준] 11000 강의실 배정  (3) 2024.11.10
[백준] 1946번 신입 사원  (0) 2024.11.06
[백준] 12904번 A와 B  (0) 2024.11.05