본문 바로가기
카테고리 없음

[백준] 15787번 기차가 어둠을 헤치고 은하수를(python)

by 윤무무 2023. 4. 24.

https://www.acmicpc.net/problem/15787

 

15787번: 기차가 어둠을 헤치고 은하수를

입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. 

www.acmicpc.net

 

1. 난이도 실버2

 

2. 내가 작성한 코드
n,m = map(int, input().split())
train = [[0] * 20 for _ in range(n)]
record = set() #set을 이용해 중복된 값 카운팅 방지

for i in range(m):
    key = list(map(int, input().split()))

    op = key[0] #명령어 종류 op에 저장

    if op == 1: #명령어1 : i번째 기차 x번째 좌석을 1로 만듦
        train[key[1]-1][key[2]-1] = 1

    elif op == 2: #명령어2 : i번째 기차 x번째 좌석을 0으로 만듦
        train[key[1]-1][key[2]-1] = 0

    elif op == 3: #명령어3 : 첫 자리에 0 삽입하고, 슬라이싱을 이용해 train 정보 변경
        train[key[1]-1].insert(0,0)
        train[key[1]-1] = train[key[1]-1][:-1]

    else: #명령어4 : 끝 자리에 0 삽입하고, 슬라이싱을 이용해 train 정보 변경
        train[key[1]-1].append(0)
        train[key[1]-1] = train[key[1]-1][1:]

for i in range(n):
    row = ""
    for j in range(20):
        row += str(train[i][j])
    record.add(row)

print(len(record))

댓글