https://school.programmers.co.kr/learn/courses/30/lessons/42587
정답코드
(2, 5, 18 테스트 케이스 런타임 에러)
def solution(priorities, location):
from collections import deque
q = deque((num, idx) for idx, num in enumerate(priorities))
answer = 0
while q:
priority = q.popleft()
if priority[0] < max(q)[0]:
q.append(priority)
else:
answer += 1
if location == priority[1]:
break
return answer
런타임 해결 코드
def solution(priorities, location):
from collections import deque
q = deque((num, idx) for idx, num in enumerate(priorities))
answer = 0
while q:
priority = q.popleft()
if len(q) > 1 and priority[0] < max(q)[0]:
q.append(priority)
else:
answer += 1
if location == priority[1]:
break
return answer
"if len(q) > 1 and priority[0] < max(q)[0]:" 분기문에서 max() 메서드를 사용하기 위해서는 q에 2개 이상 있어야 하는데 q가 pop()되면서 1개로 남게 되면 max() 메서드에서 에러가 발생하게 된다.
아마 2, 5, 18 테스트 케이스에서 런타임에러가 뜬 이유가 max() 메서드를 사용하지 못한 에러인듯 하다.
그래서 이를 해결하기 위해서는 q의 길이가 2 이상이어야 한다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 오픈채팅방 (카카오) (1) | 2022.09.17 |
---|---|
[프로그래머스] Lv.2 더 맵게 (0) | 2022.09.16 |
[프로그래머스] Lv.2 기능개발 (0) | 2022.09.14 |
[프로그래머스] Lv.2 n^2 배열 자르기 (0) | 2022.09.13 |
[프로그래머스] Lv.2 짝지어 제거하기 (0) | 2022.09.12 |