2841번: 외계인의 기타 연주

canyi·2023년 6월 14일
0

백준

목록 보기
14/19

문제링크

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

풀이

import sys

# 입력이 50만이 있을수 있어서 sys.stdin.readline() 사용
input_str = sys.stdin.readline
N, P = map(int, input_str().split())

# index가 1-6까지이므로 배열 7 만들기
stack = [[] for _ in range(7)]

# 손가락 움직이는 횟수: ans
ans = 0

for _ in range(N):
    # 줄 라인 입력
    line, p = map(int, input_str().split())
    # stack의 값이 있거나 stack 최상단의 값이 p보다 클경우
    while stack[line] and stack[line][-1] > p:
        # stack에서 값을 뺀다.
        stack[line].pop()
        # stack에서 값을 뺄때 손까락도 같이 움직인다.
        ans += 1

    # 라인이 비어있지 않고 상단값이 p와 같을 경우 무시
    if stack[line] and stack[line][-1] == p:
        continue

    # 그렇지 않을 경우 stack에 p를 넣어줌
    stack[line].append(p)
    # 손가락도 같이 움직임
    ans += 1

print(ans)

예제 입력 1

예제 입력 2

예제 입력 3

'str' object is not callable

가끔 sys.stdin.readline를 사용할 경우 'str' object is not callable라는 에러가 발생한다.

이유는 sys.stdin.readline() 에 불필요한 '()'를 넣었기 때문이다. 이부분이 매우 중요하니 조심!

profile
백엔드 개발 정리

0개의 댓글