

import sys
input = sys.stdin.readline
n, p = map(int, input().split())
melody = []
for _ in range(n):
row = list(map(int, input().split()))
melody.append(row)
stack = []
stack1 = []
stack2 = []
stack3 = []
stack4 = []
stack5 = []
stack6 = []
count = 0
for i in range(len(melody)):
line = melody[i][0]
fret = melody[i][1]
if(line == 1):
stack = stack1
elif(line == 2):
stack = stack2
elif(line == 3):
stack = stack3
elif(line == 4):
stack = stack4
elif(line == 5):
stack = stack5
elif(line == 6):
stack = stack6
# 크게 세 가지 케이스가 있는데
# 하나는 기존에 있던 것 fret 보다 값이 작아서 손을 떼야 함
# 하나는 손을 떼지 않고 새로 누름
# 하나는 기존에 누르고 있었어서 손만 똄
# 이게 떼는 로직
while(len(stack) > 0 and stack[-1] > fret):
stack.pop()
count += 1
# 뗴다가 같은 음이면?
if(len(stack) > 0 and stack[-1] == fret):
continue
# 그래서 기존보다 크면?
else:
stack.append(fret)
count += 1
print(count)
사실 최종 제출에서 문제가 한 번 생겼는데, 시간 초과 에러가 한 번 있었다.
혹시 큰 값들을 입출력 해서 그런건가? 해서
import sys
input = sys.stdin.readline
이 코드를 추가해주니 성공했다.
계속 input만 사용했는데, 앞으로는 반드시 표준 입출력을 사용해야겠다!
