코테 백준 2841 실버1

김동윤·2023년 7월 25일
post-thumbnail

백준 2841

스택에 대한 문제들을 풀면서 골드까지는 아니더라도 연습하면 좋을 문제를 풀어봤다. 아이디어 자체는 문제 그대로 스택에 마지막의 숫자가 입력값보다 크면 작을때까지 pop을 한다. 이때 pop을하면서 스택의 마지막 값이 입력값과 같다면 굳이 기타에 손을때고 다시 할 필요없이 유지하면되니깐 pass를했다.
만약 입력값이 크다면 스택에 추가해주면된다.

import sys
input=sys.stdin.readline

n,p=map(int,input().split())

guitar=[[] for i in range(n)]
cnt=0

for i in range(n):
    line,plet=map(int,input().split())
    if not guitar[line-1]:
        guitar[line-1].append(plet)
        cnt+=1
    elif guitar[line-1][-1]>plet:
        while guitar[line-1] and guitar[line-1][-1]>plet:
            guitar[line-1].pop()
            cnt+=1
        if guitar[line-1] and guitar[line-1][-1]==plet:
            pass
        else:
            guitar[line-1].append(plet)
            cnt+=1
    elif guitar[line-1][-1]<plet:
        guitar[line-1].append(plet)
        cnt+=1
        
print(cnt)

profile
Back-End

0개의 댓글