[알고리즘] 큐, 덱 - 백준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
...
Author And Source
이 문제에 관하여([알고리즘] 큐, 덱 - 백준1966번 프린터 큐), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minidoo/알고리즘-큐-덱-백준1966번-프린터-큐저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)