[코테 스터디] 그리디, 문자열 뒤집기

Q03. 문자열 뒤집기

🐣문제

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있습니다. 다솜이는 이 문자열 S에 있는 모든 숫자를 같게 만들려고 합니다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것입니다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미합니다.
문자열 S가 주어졌을 때, 다솜이가 해야 하는 행동의 최소 횟수를 출력하세요.


백준 링크 | https://www.acmicpc.net/problem/1439

🐥풀이

  1. temp에 뒤집는 기준을 두고 기준과 다른 숫자가 나오면 뒤집는다.
  2. 모두 1로 뒤집는 횟수를 구한다.
  3. 모두 0으로 뒤집는 횟수를 구한다.
  4. 둘 중 최솟값을 답으로 출력한다.

🐓코드

string = input()

temp = string[0] # 뒤집는 기준
count = [0, 0] # 0으로 뒤집는 횟수, 1로 뒤집는 횟수
count[int(temp)] += 1 # 첫번째 기준 뒤집고 횟수++

for s in string:
  # 기준 다르면 뒤집기
  if s!=temp:
    temp = s # 뒤집고 기준 바꾸기
    count[int(temp)] += 1 # 뒤집었으니까 횟수 ++

print(min(count)) # 최솟값 출력

⭐2022.03.27

내 코드지만 오랜만에 봐서 바로 이해 못했다. 따로 코테 공부도 슬슬 다시 시작해야겠다.

좋은 웹페이지 즐겨찾기