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 |
댓글