알고리즘/백준
[Silver II] 방탈출 - 15729 (python)
KimMinGyun
2024. 7. 2. 16:12
그리디 알고리즘
방탈출 게임을 하던 혜민이는 마지막 문제에 봉착했다. 단서는 다음과 같다.
- 앞에는 일렬로 놓여진 N개의 버튼이 모두 불이 꺼진 상태로 있다.
- 0 또는 1로 구성되어 있는 N자리 수가 적힌 쪽지가 있다.
- 0은 불이 꺼진 버튼, 1은 불이 켜진 버튼을 뜻한다.
- 불이 켜져 있는 버튼을 누르면 불이 꺼지고, 불이 꺼져 있는 버튼을 누르면 불이 켜진다.
- 버튼을 누르면 그 버튼 뿐만이 아닌 오른쪽 두 개의 버튼도 같이 눌린다.
혜민이는 현재 모두 불이 꺼진 상태에서 버튼을 최소로 눌러서 쪽지와 똑같은 상태로 만들어야 한다는 것을 알아냈다! 혜민이를 도와줘서 방탈출 게임에 성공하자.
첫째 줄에 N(1 ≤ N ≤ 1,000,000)가 주어지고 둘째 줄에는 쪽지에 적혀 있는 N자리의 수가 빈 칸을 사이에 두고 주어진다.
눌러야하는 버튼의 최솟값을 출력한다.
코드
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
ans = 0
for i in range(n):
if arr[i] == 1:
arr[i] = 1 - arr[i]
if i+1 < n:
arr[i+1] = 1 - arr[i+1]
if i+2 < n:
arr[i+2] = 1 - arr[i+2]
ans += 1
print(ans)