Etc/PS

BOJ_15787 기차가 어둠을 헤치고 은하수를 -Python3

CHOEEE 2022. 8. 2. 10:11

BOJ_15787 기차가 어둠을 헤치고 은하수를 -Python3

문제분석

1. 관찰
- 명령에 따라 기차 좌석을 조절해준다.
- 패스한 기차를 기록하여 이후 기차를 보낼지 판단한다.

2. 복잡도
- O(N+M) = 20만 >> 가능

3. 자료구조
- 명령 list[][]
- 패스한 기차 : list[]

해결코드

import sys
si = sys.stdin.readline

N, M = map(int, si().split())
m_list = list(list(map(int, si().split())) for _ in range(M))

train_list = [[0]*20 for _ in range(N)] # 처음기차에는 아무도 타지 않는다
pass_train = []

for m in m_list:
    m_num, i = m[0], m[1]-1
    t = train_list[i]

    if m_num ==1:
        x = m[2]-1
        if t[x] == 0:
            t[x] = 1

    elif m_num ==2:
        x = m[2]-1
        if t[x] == 1:
            t[x] = 0

    elif m_num ==3:
        t[:] = [0]+t[:-1]

    elif m_num ==4:
        t[:] = t[1:]+[0]

ans = 0
for i in range(N):
    if train_list[i] not in pass_train:
        pass_train.append(train_list[i])
        ans+=1

print(ans)