📌문제
https://www.acmicpc.net/problem/21918
🎖️난이도
✔️풀이
n, m = map(int, input().split())
s_list = list(map(int, input().split()))
for _ in range(m):
a, b, c = map(int, input().split())
if a == 1:
s_list[b-1] = c
elif a == 2:
s_list[b-1:c] = [(s_list[i]+1)%2 for i in range(b-1, c)]
elif a == 3:
s_list[b-1:c] = [0] * (c-b+1)
else:
s_list[b-1:c] = [1] * (c-b+1)
print(*s_list)
🧠노트
파이썬에는 switch-case문이 없으므로, 그냥 싹 다 if~elif~else문으로 명령어 구현해주면 된다.
출력 시에는 Asterisk(*, 별표)를 이용한 Unpacking으로 출력해주면 된다. (공백 포함 한 줄 출력)
cf. print(' '.join(list)) 와 동일
🔍참고
-
'[ 알고리즘 ] > Implementation' 카테고리의 다른 글
[백준] 14467. 소가 길을 건너간 이유 (0) | 2022.08.02 |
---|---|
[백준] 12933. 오리 (0) | 2022.08.02 |
[백준] 20546. 기적의 매매법 (0) | 2022.08.01 |
[백준] 2443. 별 찍기 - 6 (0) | 2022.06.30 |
[백준] 2442. 별 찍기 - 5 (0) | 2022.06.30 |