[백준/파이썬] 1966번

민정·2023년 10월 27일
0

[백준/파이썬]

목록 보기
179/245
post-thumbnail

📍백준 1966번 문제

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

코드

import sys
from collections import deque
input = sys.stdin.readline

test_case = int(input())
for _ in range(test_case):
    num, a = map(int, input().split())
    que = deque(list(map(int, input().split())))
    ans = 0
    while que:
        max_num = max(que)
        front = que.popleft()
        a -= 1
        if max_num == front:
            ans += 1
            if a < 0:
                print(ans)
                break
        else:
            que.append(front)
            if a < 0:
                a = len(que) - 1

풀이

que 내에서 최대값과 popleft()값(= 0번째 값, front)을 비교한다.
이때 한 칸씩 앞으로 이동했기 때문에 원하는 값의 위치(a)도 1을 빼준다.
만약 front값과 최대값이 같다면, 결과 값에 1을 더한다. 만약 a의 값이 0보다 작다면, 궁금한 문서이므로 값을 출력한다.
만약 값이 다르다면 큐 뒤에 추가하면 된다. 이때, a의 값이 0보다 작다면 방금 맨 뒤에 추가되었다는 것을 의미하므로 길이에서 1을 빼준 값으로 설정하면 된다.

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글