BOJ 2841 - 외계인의 기타 연주 (Python)

조민수·2024년 3월 20일
0

BOJ

목록 보기
25/64
post-custom-banner

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)
profile
사람을 좋아하는 Front-End 개발자
post-custom-banner

0개의 댓글