문제 풀이
def solution(priorities, location):
answer = 0
# enumerate를 사용하여 고유번호를 부여. 이후 찾고자 하는 location과 대응된다.
priorities = [i for i in enumerate(priorities)]
while True:
# 맨 앞을 가져온다. 맨 앞이 가장 큰 값일 때는 그냥 빠지기만 한다.
current_top = priorities.pop(0)
# 현재 맨 앞의 값이 다른 값보다 작다면
if any(current_top[1] < p[1] for p in priorities):
# 다시 배열에 넣어주도록 하자
priorities.append(current_top)
# 해당 값이 가장 큰 값이라면
else:
# 맨 앞은 while문의 첫 줄에서 빠진 상태이다
# 작업 완료 = 이후 작업들의 대기 시간 + 1 과 같으므로 대기 상태(answer)에 1을 추가한다.
answer += 1
# 그러다가 우리가 찾고자 하는 작업의 고유번호(location)이 나오면
if current_top[0] == location:
# answer를 리턴한다
return answer
사용 함수 간략 소개
1. enumerate
arr = [1, 2, 3, 4, 5]
arr = [i for i in enumerate(arr)]
arr = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
이런 식으로 해당 배열의 인덱스를 포함시켜주는 함수이다.
2. any
- 인자로 받은 요소 중 하나라도 True이면 True 반환
- 전부 false이거나 인자가 비어있는 경우에만 false 반환
문제 링크
programmers.co.kr/learn/courses/30/lessons/42587?language=python3
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [Python] 디스크 컨트롤러 (0) | 2020.12.02 |
---|---|
[프로그래머스] [Python] 더 맵게 (0) | 2020.11.29 |
[프로그래머스] [Python] 다리를 지나는 트럭 (0) | 2020.11.26 |
[프로그래머스] [Python] 기능 개발 (0) | 2020.11.23 |
[프로그래머스] [Python] 주식가격 (0) | 2020.11.19 |