본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2841 외계인의 기타 연주

by Alan_Kim 2023. 3. 15.
728x90
반응형

https://www.acmicpc.net/problem/2841

 

2841번: 외계인의 기타 연주

첫째 줄에 멜로디에 포함되어 있는 음의 수 N과 한 줄에 있는 프렛의 수 P가 주어진다. (N ≤ 500,000, 2 ≤ P ≤ 300,000) 다음 N개 줄에는 멜로디의 한 음을 나타내는 두 정수가 주어진다. 첫 번째 정수

www.acmicpc.net

 

문제 해결

n과 p가 매우 크기 때문에 dp를 사용하기는 부담스럽다. (dp는 주어진 숫자보다 큰 것을 모두 봐야하기 때문)

따라서 stack을 1~6번 스택을 만들고 FIFO 방식으로 들어가거나 나간 횟수 계산을 하는 것이 편하다.

 

CODE

import sys
input = sys.stdin.readline

n, p = map(int, input().split())
stack = [[] for _ in range(7)]
ans =0
for _ in range(n):
    a, b = map(int, input().split())
    while len(stack[a]):
        if stack[a][-1] > b:
            stack[a].pop()
            ans += 1
        else:
            break
    if len(stack[a])!=0 and stack[a][-1]==b: continue
    stack[a].append(b)
    ans += 1
print(ans)
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 3109 빵집  (0) 2023.03.16
[python] 백준 5397 키로거  (0) 2023.03.15
[python] 백준 1969 DNA  (0) 2023.03.15
[python] 백준 5557 1학년  (1) 2023.03.15
[python] 백준 17626 Four Squares  (0) 2023.03.14

댓글