문제
- N개의 전구가 있고 1은 켜진 상태, 0은 꺼진 상태를 의미한다.
- 전구를 제어하는 명령어가 주어질 때, 주어진 명령어를 수행한 결과 출력하기
- [1 i x] i번째 전구 상태를 x로 변경
[2 l r] l~r번 전구 상태 토글
[3 l r] l~r번 전구 끄기
[4 l r] l~r번 전구 키기
- 1 <= N, M <= 4000
1 <= l <= r <= N
풀이
- 입력받은 명령어에 따라 작업을 수행하면 된다.
- 토글 : 1 -> 0 ; 0 -> 1 변화를 abs(s-1)로 표현한다.
N, M = map(int, input().split())
status = [0] + list(map(int, input().split()))
for _ in range(M) :
a, b, c = map(int, input().split())
if a == 1 : # b번째 전구를 상태 c로 번경
status[b] = c
elif a == 2 : # b~c번 전구 상태 토글
status[b:c+1] = [abs(s-1) for s in status[b:c+1]]
elif a == 3 : # b~c번 전구 끄기
status[b:c+1] = [0] * (c+1-b)
elif a == 4 : # b~c번 전구 켜기
status[b:c+1] = [1] * (c+1-b)
print(*status[1:])
References