https://www.acmicpc.net/problem/15787
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))
댓글