💡문제 분석 요약

  • queue 사용 (deque)
  1. 입력받은 M의 중요도를 따져서 몇번째로 나오는지 확인

💡알고리즘 설계

  1. 인덱스(index)와 원소를 동시에 접근하면서 루프를 돌릴 수 있는 enumerate 사용
  2. 조건에 맞게 입력을 받기
  3. 중요도를 확인하기 위해 max 함수를 사용
  4. 큐의 맨 앞 문서가 현재 가장 중요한 문서인지 확인 중요한 문서라면 count += 1 && 종료
  5. 찾는 문서가 아니면 출력되었으니까 큐에서 제거

💡코드

from collections import deque

num = int(input())
for _ in range(num):
    N, M = map(int, input().split())
    queue = deque(map(int, input().split()))
    queue = deque([(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.popleft()
        else:
            queue.append(queue.popleft())

💡시간복잡도

O(n)

💡 틀린 이유

queue서 뽑지 않는 경우 뒤로 보내지 않았음

💡 틀린 부분 수정 or 다른 풀이

queue.append(queue.popleft()) 를 통하여 해결

💡 느낀점 or 기억할정보

스택 큐 문제 이제 익숙해질 만도 한데 아직 힘들다 ㅜㅜ

0개의 댓글

Powered by GraphCDN, the GraphQL CDN