문제
환자 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시켜준다.
- 이때 인덱스가 아닌 값으로만 비교해주며 진행하다 마지막엔 원하는 환자가 진료 받는지를 확인할 때는 인덱스로 비교해서 보여준다.
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[자료구조 활용 ][스택, 큐, 해쉬, 힙] - 단어찾기(딕셔너리) (0) | 2022.07.18 |
---|---|
[자료구조 활용 ][스택, 큐, 해쉬, 힙] - 교육과정 설계(큐) (0) | 2022.07.18 |
[자료구조 활용 ][스택, 큐, 해쉬, 힙] - 공주 구하기(큐) (0) | 2022.07.18 |
[자료구조 활용][스택, 큐, 해쉬, 힙] - 후위 연산(스택) (0) | 2022.07.17 |
[자료구조 활용][스택, 큐, 해쉬, 힙] - 후위 표기식 만들기(스택) (0) | 2022.07.17 |