자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이

[자료구조 활용 ][스택, 큐, 해쉬, 힙] - 응급실(큐)

얄루몬 2022. 7. 18. 09:59

문제

환자 n명 중 m번째 환자가 몇번째로 진료받는지를 출력하라

문제풀이

from collections import deque

n, m = map(int,input().split())
p = list(map(int,input().split()))
cnt = 0

dq = [(pos,val) for pos, val in enumerate(p)]
dq = deque(dq)

while True:
    now = dq.popleft()
    #any = 반복가능한 자료형 중 단 하나라도 참이라면 참을 반환
    #모든 요소가 거짓인 경우만 거짓 반환!
    if any(now[1] < x[1] for x in dq):
        dq.append(now)
    else:
        cnt += 1
        if now[0] == m:
            print(cnt)
            break
  • enumerate로 만든 dq를 any로 조건 확인하며 자기보다 중요도가 낮은 환자가 있으면 다시 확인을 해야하기에 append시켜준다. 
  • 이때 인덱스가 아닌 값으로만 비교해주며 진행하다 마지막엔 원하는 환자가 진료 받는지를 확인할 때는 인덱스로 비교해서 보여준다.