[알고리즘] 큐, 덱 - 백준1966번 프린터 큐

정답 코드

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

case = int(input())

for _ in range(case):
    N, M = map(int, input().split())
    arr = list(map(int, input().split()))
    arrIndex = [i for i in range(len(arr))]
    
    k = 0
    while k < len(arr) - 1:
        if arr[k] < max(arr[k+1:]):
            arr.append(arr.pop(k))
            arrIndex.append(arrIndex.pop(k))
        else:
            k += 1

        sortedArr = sorted(arr, reverse=True)
        if sortedArr == arr:
            break
    
    print(arrIndex.index(M) + 1)

풀이과정

N = 4, M = 2
arr = [1, 2, 3, 4] 라고 했을 때, M 값인 2번째 위치의 2가 출력되는 순서가 궁금한 문제

arr의 인덱스를 가진 배열 arrIndex를 만들어준다.
arr의 변화가 일어날 때마다, arrIndex도 똑같이 적용해주면 된다.

k = 0

[ 1, 2, 3, 4 ]
[ 2, 3, 4, 1 ]
[ 3, 4, 1, 2 ]
[ 4, 1, 2, 3 ] 	// 4 출력

k = 1

[ 1, 2, 3 ]
[ 2, 3, 1 ]
[ 3, 1, 2 ]	// 3 출력

k = 2
...

좋은 웹페이지 즐겨찾기