현제의 현재이야기
[백준/python] 15787 - 기차가 어둠을 헤치고 은하수를 본문
from collections import deque
def one(arr, x):
if arr[x] == 1:
return arr
else:
arr[x] = 1
return arr
def two(arr, x):
if arr[x] == 0:
return arr
else:
arr[x] = 0
return arr
def thr(arr):
arr = deque(arr)
arr.rotate(1)
if arr[0] == 1:
arr[0] = 0
return list(arr)
def four(arr):
arr = deque(arr)
arr.rotate(-1)
if arr[-1] == 1:
arr[-1] = 0
return list(arr)
n, m = map(int, input().split())
train = [[0] * 20 for _ in range(n)]
order = [
list(map(int,input().split()))
for _ in range(m)
]
box =[]
cnt = 0
for i in range(m):
if order[i][0] == 1:
train[order[i][1] -1] = one(train[order[i][1] -1], order[i][2] -1)
elif order[i][0] == 2:
train[order[i][1] -1] = two(train[order[i][1] -1], order[i][2] -1)
elif order[i][0] == 3:
train[order[i][1] -1] = thr(train[order[i][1] -1])
elif order[i][0] == 4:
train[order[i][1] -1] = four(train[order[i][1] -1])
for target in train:
if target in box:
continue
else:
box.append(target)
cnt += 1
print(cnt)
| 알고리즘
order의 첫번 째가 주문의 종류이기 때문에, 1, 2, 3, 4로 나누었다. 그리고 각 함수에 기차칸(order[ı][1])과 좌석 x를 넣어주었다.
-1를 한 이유는 첫번째 기차 칸과 첫번 째 좌석은 1이지만, 기차의 배열은 0부터 시작하기 때문이다. one과 two는 그냥 자리를 확인하고
채워주고 비워준다. thr four은 앞으로 한 칸, 뒤로 한칸씩 로테이틀해주고 각 맨 앞과 맨 뒤가 1, 즉 좌석이 차있으면 0으로 바꾸어준다. 그리고 배열에 넣고 있으면 cnt +1을 해준다
'algorithm' 카테고리의 다른 글
[백준/python] 2606 - 바이러스 (0) | 2022.09.28 |
---|---|
[백준/python] 1331 - 나이트투어 (0) | 2022.09.27 |
[백준/python] 18310 - 안테나 (0) | 2022.09.19 |
[백준/python] 2644 - 촌수계산 (1) | 2022.09.18 |
[백준/python] 15486 - 퇴사2 (0) | 2022.09.07 |
Comments