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
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2885 초콜릿 식사 (0) | 2023.04.07 |
---|---|
[python] 백준 20437 문자열 게임 2 (0) | 2023.04.07 |
[python] 백준 2195 문자열 복사 (0) | 2023.04.06 |
[python] 백준 8980 택배 (0) | 2023.04.06 |
[python] 백준 1781 컵라면 (0) | 2023.04.05 |
댓글