백준

[백준] 15729 - 방탈출

탈탈99 2022. 1. 19. 17:37
반응형

1. 문제

 

2. 코드

n = int(input())
l = list(map(int, input().split()))
cur = [0 for _ in range(n)]
cnt = 0

for i in range(n):
    if l[i] != cur[i]:
        cnt += 1
        
        cur[i] = 1-cur[i]
        if i < n-1:
            cur[i+1] = 1-cur[i+1]
        if i < n-2:
            cur[i+2] = 1-cur[i+2]
print(cnt)

 

3. 풀이

그리디 알고리즘을 사용하면 된다. 지금 현재의 값이 중요하다.

앞에서부터 차례대로 보면서 i번째 같이 입력값의 i번째와 같으면 그대로 넘어가고, 같지 않으면 오른쪽 두 칸까지 반전(0->1, 1->0) 시켜준다. 

입력값과 달랐던 횟수를 출력하면 되는 쉬운 문제이다.

728x90
반응형