Algorithm (PS)
[백준] 15787 기차가 어둠을 헤치고 은하수를 Python
minjiwoo
2022. 11. 11. 12:38
728x90
https://www.acmicpc.net/problem/15787
15787번: 기차가 어둠을 헤치고 은하수를
입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다.
www.acmicpc.net
구현문제이다 실버 2..
하라는대로 명령처리를 해준다음에 기차를 for문을 통해서 하나씩 string으로 만들고, 이전에 등장했는지 count해준다
3번명령 4번명령을 처음에는 for문으로 구현하다가 생각해보니까 문자열슬라이싱을 쓰는 것이 파이썬이기도 하고 더 빠를것 같아서 개선했다
놀랍게도 pypy python 모두 통과한다 ㅋㅋ (파이썬은 조금 힘겹게 통과하긴함 ㅎ)
n, m = map(int, input().split())
trains = [[0] * 20 for _ in range(n)] # 0 : 빈자리, 1: 승객 o
patterns = []
answer = 0
for _ in range(m):
data = list(map(int, input().split()))
if data[0] == 1:
i, j = data[1], data[2]
if trains[i-1][j-1] == 0:
trains[i-1][j-1] = 1
elif data[0] == 2:
i, j = data[1], data[2]
if trains[i-1][j-1] == 1:
trains[i-1][j-1] = 0
elif data[0] == 3:
i = data[1]-1
trains[i] = [0] + trains[i][:19]
elif data[0] == 4: # 4 앞으로 한칸
i = data[1]-1
trains[i] = trains[i][1:]+[0]
# 패턴 확인
for i in range(n):
train = str(trains[i])
if train not in patterns:
answer += 1
patterns.append(train)
else:
continue
print(answer)
728x90