BAEKJOON #1966) 프린터 큐

    반응형

    문제 유형: 큐, 구현, 그리디

     

    이 문제 풀이의 핵심 아이디어는 다음과 같다.

    1. 현재 리스트에서 가장 큰 수가 앞에 올 때까지 회전시킨 뒤에 꺼낸다.

    2. 이때, 꺼낸다는 것은 프린트를 했다는 뜻이므로, 프린트한 횟수의 카운트를 늘린다.

    3. 가장 큰 수가 내가 알고 싶은 문서에 해당하면서 가장 앞에 있을 때 프린트 횟수를 출력하며 프로그램을 종료한다.

     

    #제출코드

    test_case = int(input())
    
    for _ in range(test_case):
        n, m = list(map(int, input().split()))
        queue = list(map(int, input().split()))
        queue = [(i, idx) for idx, i in enumerate(queue)]
        
        count = 0
        while True:
            if queue[0][0] == max(queue, key = lambda x:x[0])[0]:
                count += 1
                if queue[0][1] == m:
                    print(count)
                    break
                else:
                    queue.pop(0)
            else:
                queue.append(queue.pop(0))
    •  
    반응형

    'Algorithm > BOJ' 카테고리의 다른 글

    BAEKJOON #11399) ATM (python)  (0) 2021.09.01
    BAEKJOON #2839) 설탕 배달 (python)  (0) 2021.09.01
    BAEKJOON #1874) 스택수열  (0) 2021.06.11
    BAEKJOON #2798) 블랙잭  (0) 2021.06.10
    BAEKJOON #2920) 음계  (0) 2021.05.07

    댓글