반응형
백준 1966번 문제
제목에서도 알 수 있듯이 큐와 관련된 문제이다.
기본적인 큐의 push와 pop을 구현하면 되지만 이 문제에서는 중요도를 두어 중요도가 높은 문서가 큐에 있으면 맨 뒤로 보내기 때문에 pop을 한 뒤 다시 push를 해주면 될 것으로 보인다.
구현한 코드이다.
obj = int(input())
for i in range(obj):
count = 0
n, x = input().split()
n = int(n)
x = int(x)
arr = input().split()
for j in range(n):
arr[j] = int(arr[j])
while True:
flag = 0
for j in range(len(arr)):
if arr[0] < arr[j]:
flag = 1
if flag == 1:
arr.append(arr[0])
del arr[0]
if x == 0:
x = len(arr) - 1
else:
x -= 1
else:
count += 1
del arr[0]
if x == 0:
break
else:
x -= 1
print(count)
원하는 문서의 위치인 x값의 변화를 통해 계속 따라가 주는 것이 가장 중요한 부분이었다.
기본적인 큐의 구현에 x값의 변화, 중요도가 더 높은 문서가 있다면 문서를 뒤로 돌리는 부분 세가지를 생각하여 구현하면
쉽게 풀린다.
성공!
반응형
'Computer Science > 백준' 카테고리의 다른 글
백준 1021번 회전하는 큐 (0) | 2021.08.13 |
---|---|
백준 10866번 덱 (0) | 2021.08.12 |
백준 14889번 스타트와 링크 (0) | 2020.03.12 |
백준 14888번 연산자 끼워넣기 (0) | 2020.03.12 |
백준 2580번 스도쿠 (0) | 2020.03.12 |