21918번: 전구
$N$개의 전구가 있고 맨 왼쪽에 있는 전구를 첫 번째라고 하자. 전구의 상태는 두 가지가 있으며 이를 숫자로 표현한다. $1$은 전구가 켜져 있는 상태를 의미하고, $0$은 전구가 꺼져 있는 상태를
www.acmicpc.net
문제
개의 전구가 있고 맨 왼쪽에 있는 전구를 첫 번째라고 하자. 전구의 상태는 두 가지가 있으며 이를 숫자로 표현한다.
1 0 은 전구가 꺼져 있는 상태를 의미한다.
은 전구가 켜져 있는 상태를 의미하고,전구를 제어하는 명령어가 1번부터 4번까지 4개가 있다. 아래 표는 각 명령어에 대한 설명이다.
1번 명령어 [ ] | 번째 전구의 상태를 로 변경한다. |
2번 명령어 [ ] | 번째까지의 전구의 상태를 변경한다. (켜져있는 전구는 끄고, 꺼져있는 전구는 킨다.) | 번째부터
3번 명령어 [ ] | 번째까지의 전구를 끈다. | 번째부터
4번 명령어 [ ] | 번째까지의 전구를 킨다. | 번째부터
주어지는 명령어를 다 수행한 결과 전구는 어떤 상태인지 알아보자.
입력
첫 번째 줄에 전구의 개수 와 입력되는 명령어의 개수 이 주어진다.
두 번째 줄에는 개의 전구가 현재 어떤 상태 인지 주어진다. ($0$은 꺼져있는 상태, 은 켜져있는 상태)
번째 줄부터 번째 줄까지 세 개의 정수 가 들어온다.
번째 명령어를 의미하고 는 가 1인 경우는 각각 를 의미하고 가 중 하나면 각각 을 의미한다.
는출력
모든 명령어를 수행한 후 전구가 어떤 상태인지 출력한다.
코드
n, m = map(int, input().split())
light = list(map(int, input().split()))
def cmd(a,b,c):
if a == 1:
light[b-1] = c
elif a == 2:
for i in range(b, c+1):
if light[i-1] == 0:
light[i-1] = 1
else:
light[i-1] = 0
elif a == 3:
for i in range(b, c+1):
light[i-1] = 0
else:
for i in range(b, c+1):
light[i-1] = 1
for i in range(m):
a, b, c = map(int, input().split())
cmd(a,b,c)
print(*light)
'문제풀이 > 구현' 카테고리의 다른 글
[Python/파이썬] 백준 20546번 🐜 기적의 매매법 🐜 (0) | 2023.02.19 |
---|---|
[Python/파이썬] 백준 21608번 상어 초등학교 (0) | 2023.02.19 |
[Python/파이썬] 백준 14467번 소가 길을 건너간 이유 1 (1) | 2023.02.18 |
[Python/파이썬] 백준 1212번 8진수 2진수 (0) | 2023.02.18 |
[Python/파이썬] 백준 20053번 최소, 최대 2 (0) | 2023.02.18 |