[Python-CodingTest] 5-6. 응급실 (큐)
응급실
문제 정리
입력
6 0
60 60 90 60 60 60
처리 과정
- 환자 리스트를 튜플 형태로 받기
- 리스트를 큐로 변경
- 큐에서 환자(
cur
)를pop()
했을 때, 큐 안에 있는 다른 환자들 중에 현재 환자(cur
)보다 위험도가 높은 환자가 있다면 현재 환자(cur
)를 큐 맨 뒤로 붙이기 - 없다면 그 환자의 위험도가 가장 높기 때문에 진료 가능
- 진료한 환자가
m
번째 환자라면 while문 종료
이 문제는 위험도가 같은 사람이 존재하기 때문에 정렬로 풀어서는 안됨!
출력
5
풀이
import sys
from collections import deque # deque라는 자료구조를 사용하기 위해 임포트
sys.stdin = open("./input/in6.txt", "rt")
n,m=map(int,input().split())
# 튜플 형태로 리스트 받기 (그 사람이 몇번째 사람인지도 같이 받기 위해)
Q=[(pos,val) for pos,val in enumerate(list(map(int,input().split())))]
Q=deque(Q) # 큐로 변경
cnt=0
while True:
cur=Q.popleft() # cur가 (0,60)이라면 cur[0]은 0(번째), cur[1]은 60(위험도)
if any(cur[1]<x[1] for x in Q): # any의 조건문이 단 한번이라도 참이 되면 if문 성립
Q.append(cur)
else:
cnt+=1
if cur[0]==m: # cur[0]은 그 사람이 몇 번째였는지를 의미
print(cnt)
break
정리
lst=[(x,y) for x,y in enumerate(list(map(int,input().split())))]
: 튜플 형태로 리스트 받기Q=deque(lst)
: 튜플 리스트를 큐로 변경cur=Q.popleft()
했을 때, 튜플의 각 요소는cur[0]
과cur[1]
로 접근 가능any(cur[1]<x[1] for x in Q)
: 조건문이 단 한번이라도 참이 되면 if문 성립 &for x in Q
와 같이 큐 안의 요소들 접근 가능
💛 개인 공부 기록용 블로그입니다. 👻