1439번: 뒤집기
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모
www.acmicpc.net
문자열의 특정 부분의 1/0을 반전시킬 수 있을 때 최소한의 횟수로 전체 문자열의 숫자를 같게 만드는 문제이다.
0과 1이 뒤집어지는 부분이 몇 개 인지 세어보면 규칙을 찾을 수 있다.
s = input()
n = s[0]
count = 0
for i in range(1,len(s)):
if n != s[i]:
n = s[i]
count += 1
print((count+1)//2)
001111 처럼 한 번 꺾이면 0이나 1부분을 한 번 뒤집으면 전체를 똑같이 만들 수 있다. -> 1번
000111000 처럼 두번 꺾이면 111부분만 뒤집으면 전체를 똑같이 만들 수 있다 -> 1번
00110011 처럼 세 번 꺾이면 00,00부분이나 11,11부분을 뒤집어서 전체를 똑같이 만들 수 있다 -> 2번
0011001100 처럼 네 번 꺾이면 11,11 부분을 뒤집어서 전체를 똑같이 만들 수 있다 -> 2번
1,2번 꺾임 -> 최소횟수 1번
3,4번 꺾임 -> 최소횟수 2번
5,6번 꺾임 -> 최소횟수 3번
...
2*n-1, 2*n번 꺾임 -> 최소횟수 n 번
'코딩 테스트 및 알고리즘 > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글
Q5. 볼링공 고르기 (0) | 2022.04.06 |
---|---|
Q4. 만들 수 없는 금액 (0) | 2022.04.05 |
Q2 곱하기 혹은 더하기 (0) | 2022.04.03 |
Q1. 모험가 길드 (0) | 2022.04.03 |
Q13. 치킨 배달 (0) | 2022.04.03 |