문제
N개의 전구가 있고 맨 왼쪽에 있는 전구를 첫 번째라고 하자. 전구의 상태는 두 가지가 있으며 이를 숫자로 표현한다.
1은 전구가 켜져 있는 상태를 의미하고, 0은 전구가 꺼져 있는 상태를 의미한다.
전구를 제어하는 명령어가 1번부터 4번까지 4개가 있다. 아래 표는 각 명령어에 대한 설명이다.
모든 명령어를 수행한 후 전구가 어떤 상태인지 출력한다.
풀이
이 문제는 단순 하드코딩으로 풀 수 있는 문제였다. 들어온 명령에 따라서 비트 연산으로 반전 시키는 법도 존재한다고 한다.
import sys
si = sys.stdin.readline
n, m = map(int, si().split())
arr = list(map(int, si().split()))
def command(c):
global arr
if c[0] == 1:
arr[c[1] - 1] = c[2]
elif c[0] == 2:
for idx in range(c[1] - 1, c[2]):
if arr[idx] == 0:
arr[idx] = 1
else:
arr[idx] = 0
elif c[0] == 3:
for j in range(c[1] - 1, c[2]):
arr[j] = 0
elif c[0] == 4:
for k in range(c[1] - 1, c[2]):
arr[k] = 1
for i in range(m):
line = list(map(int, si().split()))
command(line)
for ans in arr:
print(ans)
'알고리즘' 카테고리의 다른 글
[Python] BOJ 백준 21923 곡예 비행 (0) | 2022.04.04 |
---|---|
[Python] BOJ 백준 21922 학부연구생 민상 (0) | 2022.04.04 |
[Python] BOJ 백준 21921 블로그 (0) | 2022.04.04 |
[Python] BOJ 백준 21920 서로소평균 (0) | 2022.04.03 |
[Python] BOJ 백준 21919번 소수최소공배수 (0) | 2022.04.03 |