[Python] 백준 2841_ 외계인의 기타 연주
https://www.acmicpc.net/problem/2841
이 문제는 스택의 개념을 이용하면 해결할 수 있다.
코드
주석을 통해 최대한 자세히 설명을 적어두었다.
import sys
input = sys.stdin.readline
n, p = map(int,input().split())
g = [[] for _ in range(7)]
cnt=0
for i in range(n):
line, pnum = map(int,input().split())
if len(g[line])==0:
g[line].append(pnum)
cnt+=1
else:
if pnum>g[line][-1]: #새로운 프렛의 번호가 더 클 경우
g[line].append(pnum)#(손가락 뗄 필요x,바로 누르기)
cnt+=1
elif pnum<g[line][-1]:#새로운 프렛의 번호가 더 작을 경우
while True:
if len(g[line])==0 or pnum>g[line][-1]:
#스택이 비거나 프렛이 더 크면 손가락 떼기를 멈추 누르기
g[line].append(pnum)
cnt+=1
break
elif pnum==g[line][-1]: #프렛의 번호가 같으면 추가 x
break
else: #새로운 프렛의번호가 계속 작으면 계속 손가락 떼기
g[line].pop()
cnt+=1
print(cnt)
Author And Source
이 문제에 관하여([Python] 백준 2841_ 외계인의 기타 연주), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@soobin519/Python-백준-2841-외계인의-기타-연주저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)