그리디(백준 1439번) - 3번 문자열 뒤집기

·2021년 9월 24일
0

이코테_알고리즘

목록 보기
12/23

풀이전략

  • 문제를 보고 추가적으로 예시를 넣어보았다.

    1100110010001 이라면
    몇번 뒤집었을때 최소 뒤집는 횟수가 나올까? 라는 생각을 햇다...
    1을 뒤집게 되면 총 4번이고,
    0을 뒤집게 되면 총 3번이다.
    그렇다면?!! 0을 뒤집었을때 3번만 뒤집으면 되므로 0을 3번 뒤집자.

-> 위에서 내가 생각한 대로라면 1번과 0번 뒤집기에 대한 변수가 필요로 하다.
그리고 그것을 적절히 활용하면 됨!!

소스코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;


int main() {
	
	string s;
	cin >> s;

	char word;
	int one = 0;
	int zero = 0;

	if (s[0] == '0')
	{
		zero = 1;
	}
	else
	{
		one = 1;
	}

	word = s[0];
	for (int i = 1; i < s.length(); i++)
	{
		if (word != s[i])
		{
			word = s[i];

			if (word == '0')
			{
				zero += 1;
			}
			else
			{
				one += 1;
			}

		}
	}

	cout << min(one, zero);

	return 0;
}
profile
🔥🔥🔥

0개의 댓글