반응형
문제
방탈출 게임을 하던 혜민이는 마지막 문제에 봉착했다. 단서는 다음과 같다.
- 앞에는 일렬로 놓여진 N개의 버튼이 모두 불이 꺼진 상태로 있다.
- 0 또는 1로 구성되어 있는 N자리 수가 적힌 쪽지가 있다.
- 0은 불이 꺼진 버튼, 1은 불이 켜진 버튼을 뜻한다.
- 불이 켜져 있는 버튼을 누르면 불이 꺼지고, 불이 꺼져 있는 버튼을 누르면 불이 켜진다.
- 버튼을 누르면 그 버튼 뿐만이 아닌 오른쪽 두 개의 버튼도 같이 눌린다.
혜민이는 현재 모두 불이 꺼진 상태에서 버튼을 최소로 눌러서 쪽지와 똑같은 상태로 만들어야 한다는 것을 알아냈다! 혜민이를 도와줘서 방탈출 게임에 성공하자.
문제풀이
n=int(input())
arr=list(map(int,input().split()))
#01
tmp=[False]*n
cnt=0
for i in range(n):
#02
if arr[i]!=tmp[i]:
cnt+=1
tmp[i]=not tmp[i]
if i+1<n:
tmp[i+1]=not tmp[i+1]
if i+2<n:
tmp[i+2]=not tmp[i+2]
print(cnt)
- #01 : 입력을 받은 후 tmp 즉 초기 모두 불이 꺼진 상태의 리스트를 만들어준다.
개수를 체크할 cnt라는 변수도 0으로 설정해준다.
- #02 : 만약 입력받은 arr[i]와 tmp[i]값이 다르다면 버튼을 눌러야되니 cnt에 1을 더한다.
tmp[i]의 값을 False이면 True로 True이면 False로 바꿔준다.
tmp[i+1]와 tmp[i+2]도 indexerror가 발생하지 않는 범위이면 tmp[i]처럼 바꿔준다.
최종 cnt값을 출력해준다.
'프로그래밍 > 백준' 카테고리의 다른 글
[알고리즘] 백준 22993 파이썬 - 서든어택 3 (2) | 2022.12.26 |
---|---|
[알고리즘] 백준 13164 파이썬 - 행복 유치원 (0) | 2022.12.25 |
[알고리즘] 백준 15903 파이썬 - 카드 합체 놀이 (0) | 2022.12.23 |
[알고리즘] 백준 5545 파이썬 - 최고의 피자 (3) | 2022.12.22 |
[알고리즘] 백준 1263 파이썬 - 시간 관리 (1) | 2022.12.21 |