Coding Test/baekjoon

[백준 2841] 외계인의 기타 연주- python (solved.ac - 실버 1)

조용장 2022. 4. 17. 01:03

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

 

2841번: 외계인의 기타 연주

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

www.acmicpc.net

풀이

문제를 보았을때 알수있는 힌트

1~6번까지 리스트를 만들고 스택을 이용해서 이전에 누른것 보다 크거나 작거나 확인하면서 append, pop 형식으로 문제를 풀면 된다.

예시:

2번 줄에 8을 누른다. 1

2번 줄에 10을 누른다 2

2번 줄에 12를 누른다. 3

2번 줄에 10을 누르기위해 12를 뗀다. 4

2번 줄에 5번을 누르기 위해 10을 뗀다. 5

2번 줄에 8번을 뗀다. 6

2번 줄에 5번을 누른다. 7

총 7번을 움직인다.

 

import sys

input = sys.stdin.readline

n,p= map(int,input().split())
n_list = [[0] for _ in range(7)]
count=0
for i in range(n):
    x,y= map(int,input().split())
    while n_list[x][-1]>y:
        count+=1
        del n_list[x][-1]
    if n_list[x][-1]<y:
        count+=1
        n_list[x].append(y)
print(count)