Recent Posts
밍쯔와 안작고 안귀여운 에러들🖤
[Python] 프로그래머스 고득점 kit - 스택/큐: level2 프린터 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/42587
코드
def solution(priorities, location):
queue = [(i, p) for i, p in enumerate(priorities)]
cnt = 0
while True:
try:
tmp = queue.pop(0)
if any(tmp[1] < q[1] for q in queue):
queue.append(tmp)
else:
cnt += 1
if tmp[0] == location:
break
except IndexError:
break
return cnt
설명
처음의 인덱스 값과 우선순위 값을 함께 queue에 저장한다.
이를 앞에서부터 꺼내보며 우선순위가 자신보다 큰것이 있는지 비교하고, 없는 경우 다시 append하지 않고 꺼낸다.
이때, 꺼낸 tmp의 location 값이 찾던 값이면 cnt를 반환한다.
고찰
any, all, enumerate 사용에 익숙해지자. 파이썬을 오랜만에 썼더니 pythonic한 생각이 쉽게 나오지 않는 것 같다. 포인터의 이동을 고민하다가 늦어졌다. 언어의 특성을 고민하면서 문제에 접근하자!
'Algorithm' 카테고리의 다른 글
[Python] 프로그래머스 - level1 신규 아이디 추천 (0) | 2022.03.07 |
---|---|
[Python] 프로그래머스 - level1 숫자 문자열과 영단 (0) | 2022.03.06 |
[Python] 프로그래머스 고득점 kit - 스택/큐: level2 다리를 지나는 트럭 (0) | 2022.02.26 |
[Python] 프로그래머스 고득점 kit - 스택/큐: level2 기능개발 (0) | 2022.01.19 |
[Python] 프로그래머스 고득점 kit - 해시: level3 베스트 앨범 (0) | 2022.01.18 |