BOJ 15729 - 방탈출 (Python)

조민수·2024년 6월 1일
0

BOJ

목록 보기
60/64
post-custom-banner

S2, 그리디


문제

방탈출 게임을 하던 혜민이는 마지막 문제에 봉착했다. 단서는 다음과 같다.

  1. 앞에는 일렬로 놓여진 N개의 버튼이 모두 불이 꺼진 상태로 있다.
  2. 0 또는 1로 구성되어 있는 N자리 수가 적힌 쪽지가 있다.
  3. 0은 불이 꺼진 버튼, 1은 불이 켜진 버튼을 뜻한다.
  4. 불이 켜져 있는 버튼을 누르면 불이 꺼지고, 불이 꺼져 있는 버튼을 누르면 불이 켜진다.
  5. 버튼을 누르면 그 버튼 뿐만이 아닌 오른쪽 두 개의 버튼도 같이 눌린다.

혜민이는 현재 모두 불이 꺼진 상태에서 버튼을 최소로 눌러서 쪽지와 똑같은 상태로 만들어야 한다는 것을 알아냈다! 혜민이를 도와줘서 방탈출 게임에 성공하자.


풀이

  • 간단하게 왼쪽부터 시작해서 바꿔주면 되는 문제
  • 현재 위치를 통해 index 참조 에러만 조심하면 해결할 수 있다.
from sys import stdin

n = int(stdin.readline())
arr = list(map(int, stdin.readline().split()))
lights = [0] * n
res = 0

for i in range(n):
    if arr[i] != lights[i]:
        res += 1
        if i <= n - 3:
            for j in range(i, i + 3):
                if lights[j] == 1:
                    lights[j] = 0
                else:
                    lights[j] = 1
        elif i == n - 2:
            for j in range(i, i + 2):
                if lights[j] == 1:
                    lights[j] = 0
                else:
                    lights[j] = 1
        elif i == n - 1:
            for j in range(i, i + 1):
                if lights[j] == 1:
                    lights[j] = 0
                else:
                    lights[j] = 1

print(res)
profile
사람을 좋아하는 Front-End 개발자
post-custom-banner

0개의 댓글