S1, 스택
풀이
if
문의 향연...
- 더 좋은 풀이로 최적화 시킬 수 있을 것 같다.
- 각 줄마다 stack을 만들어 해당 부분에서의 프랫을 각 stack의 마지막 인덱스와 비교해
res
를 올려가는 로직으로 구성
from sys import stdin
n, p = map(int, stdin.readline().split())
res = 0
stack = [[] for _ in range(n + 1)]
for _ in range(n):
line, prat = map(int, stdin.readline().split())
if len(stack[line]) == 0:
res += 1
stack[line].append(prat)
else:
if stack[line][-1] == prat:
continue
elif stack[line][-1] < prat:
res += 1
stack[line].append(prat)
else:
while stack[line][-1] > prat:
stack[line].pop()
res += 1
if len(stack[line]) == 0:
break
if len(stack[line]) == 0:
res += 1
stack[line].append(prat)
else:
if stack[line][-1] == prat:
continue
else:
stack[line].append(prat)
res += 1
print(res)