본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2138 전구와 스위치

by Alan_Kim 2023. 4. 6.
728x90
반응형

https://www.acmicpc.net/problem/2138

 

2138번: 전구와 스위치

N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는 상태와 꺼져 있는 상태 중 하나의 상태를 가진다. i(1 < i < N)번 스위치를 누르면 i-1, i, i+1의 세 개의 전구의 상태가 바뀐다. 즉, 꺼져

www.acmicpc.net

 

 

문제 해결

살짝 바꿔야 하는 부분이 있을 수 있고, 전체를 바꿔야 하는 경우일 수도 있다.

사이드 (0,1 인덱스, n-2,n-1 인덱스)는 2개가 바뀌고 나머지는 3개가 바뀐다.

 

CODE

import copy
n = int(input())
light = [int(c) for c in input()]
result = [int(c) for c in input()]
r1 = copy.deepcopy(light)
r2 = copy.deepcopy(light)

def reverse(A,B):
    L = A[:]
    press = 0
    for i in range(1,n):
        if L[i-1] == B[i-1]: continue
        press += 1
        for j in range(i-1, i+2):
            if j<n:
                L[j] = 1 - L[j]
    return press if L ==B else 1e9

ans = reverse(light,result)
light[0] = 1 - light[0]
light[1] = 1 - light[1]
ans = min(ans, reverse(light,result)+1)
print(ans if ans != 1e9 else -1)
728x90
반응형

댓글