프린터 큐
풀이
큐의 방식에 대해서 고려한다면 금방 풀 수 있을 것 같다 생각했고, 예상은 맞았다.
아래처럼 우선 Q를 while문으로 Q값이 있을 때 반복했다.
그리고 Q [0]가 최댓값이면 출력하고 아니면 마지막으로 옮기는 작업을 하는 과정에서 M과 출력 순서인 number를 건드렸다.
import sys
# 테스트 케이스 수
T = int(sys.stdin.readline())
for i in range(T):
# 문서갯수 N, 궁금한 문서는 몇 번째? M
N, M = map(int, sys.stdin.readline().split())
# Q리스트
Q = list(map(int, sys.stdin.readline().split()))
# Q가 있을 때만 작동
number = 0
while Q:
# 뽑아내는 값이 제일 큰 값이면
if Q[0] == max(Q):
Q.pop(0)
number += 1
if M == 0:
break
else:
M -= 1
# 아니면
else:
# 빼서 뒤로 돌려보내기
tmp = Q.pop(0)
Q.append(tmp)
if M == 0:
M = len(Q) -1
else:
M -= 1
print(number)
다른 사람 풀이
주어진 문서의 중요도와 인덱스를 튜플 형태로 리스트에 저장한 후 중요도가 높은 순서로 문서를 재배치하는 방식으로 사용하였다.
N=int(input())
for i in range(N):
n,res=map(int,input().split())
val=list(map(int,input().split()))
result=[]
for i in range(n):
result.append((val[i],i))
count=0
cnt=0
for k in range(n):
for i in range(n):
flag=0
for j in range(cnt+1,n):
if result[cnt][0]<result[j][0]:
result.append(result[cnt])
result.pop(cnt)
flag=1
break
if flag==0:
cnt+=1
for i in range(n):
a,k=result[i]
if k== res:
print(i+1)
'알고리즘 > 백준' 카테고리의 다른 글
백준 실버2 18111. 마인크래프트 (python) (0) | 2024.02.29 |
---|---|
백준 실버3 1003. 피보나치 함수 (python) (1) | 2024.02.24 |
백준 실버4 18110.solved.ac (python) (1) | 2024.02.14 |
백준 실버5 1676.팩토리얼 0의 개수 성공 (python) (1) | 2024.02.14 |
백준 브론즈3 2490. 윷놀이 (python) (1) | 2024.01.31 |