[BOJ] Q2138 전구와 스위치
[BOJ] Q2138 전구와 스위치
Question
Language: Python
Difficulty: Gold 5
해당 문제는 서로 연속된 전구에 영향을 줄 수 있다는 점에서 인접한 전구에 대한 스위치 작동 여부 판단이 중요하다.
아래의 그림을 보면, 특정 스위치를 작동시키면 좌/우 전구까지 상태가 바뀌기 때문에, 이를 고려해서 스위치를 동작시켜야한다.
만일, 이전 전구의 상태가 만들고자 하는 전구의 상태와 다른 경우에만 해당 위치의 스위치를 동작시키도록 한다. 이런식으로 1~N 번까지의 index을 조사하면서 특정 상태의 전구를 만들수 있는지 확인한다.
Solution
from math import inf
def change_status(arr,index):
if index >0:
arr[index-1]=1-arr[index-1]
arr[index]=1-arr[index]
if index<n-1:
arr[index+1]=1-arr[index+1]
def solution():
for i in range(2):
temp=before[:]
count=0
if i==1:
change_status(temp,0)
count+=1
for index in range(1,n):
if temp[index-1]!=after[index-1]:
change_status(temp,index)
count+=1
if temp == after:
print(count)
return
print(-1)
if __name__ == "__main__":
n=int(input())
before=list(map(int,input().strip()))
after=list(map(int,input().strip()))
solution()
댓글남기기