본문 바로가기

알고리즘

파이썬)뒤집기

https://www.acmicpc.net/problem/1439

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net

s = input()

cnt = 0

for i in range(len(s) - 1):
    if s[i] != s[i+1]:
        cnt += 1
        
print((cnt+1) // 2)

이 문제는 은근 어려웠다.

연속되는 수열의 개수를 구해야하나? 라고 생각해 연속 수열을 구하는 쪽으로 접근했다.

하지만 시간초과가 나오게 되었고 s의 길이가 100만인 것을 보아 하나의 반복문으로 수행해야 한다는 것을 생각해내 결국 다른 사람의 답을 보게 되었다.

이해는 금방 되었다.

우선 반복문을 통해 s[i]가 s[i+1]과 다른 경우 (0 => 1 or 1 => 0) cnt를 1 더해준다.

그리고 2로 나누면 된다.

왜냐하면 cnt는 다솜이가 뒤집어야 하는 횟수를 가지고 있기 때문이다..

 

무언가 현타가 오는 문제였다.

'알고리즘' 카테고리의 다른 글

파이썬)내리막길 -BOJ  (0) 2023.08.06
파이썬)안전영역 BOJ-2468  (0) 2023.07.31
파이썬) 토너먼트  (0) 2023.07.27
파이썬)수들의 합  (0) 2023.07.26
파이썬)K번째 수  (0) 2023.07.20