티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3
코드
def solution(priorities, location):
cnt = 0
while(len(priorities)):
if location==0:
if priorities[0] < max(priorities):
priorities.append(priorities.pop(0))
location = len(priorities)-1
else:
return cnt + 1
else:
if priorities[0] < max(priorities):
priorities.append(priorities.pop(0))
location -= 1
else:
priorities.pop(0)
location -= 1
cnt += 1
location이 0이면서 우선순위도 priorities에서 가장 클 경우 cnt + 1을 리턴하면 된다.
더 큰 우선순위가 있을 경우에는 pop해준다음 append를 해줘서 맨 뒤로 보내주고 location도 맨 뒤로 보내게 len(priorities) - 1 을 해준다.
location이 0이 아니면서 우선순위가 priorities에서 가장 클 경우 pop()을 해줘서 priorities 배열에서 빼준다음 location -1을 해준다.
더 큰 우선순위가 있을 경우에는 맨 뒤로 보내주고 location은 0이 아니므로 -1만 해주면 된다.
deque을 이용한 풀이
from collections import deque
def solution(priorities, location):
answer = 0
d = deque([(v,i) for i,v in enumerate(priorities)])
while len(d):
item = d.popleft()
if d and max(d)[0] > item[0]:
d.append(item)
else:
answer += 1
if item[1] == location:
break
return answer
우선순위와 location을 하나의 투플로 만들어서 저장해서 location을 따로 계산 안해줘도 되서 편리한 풀이 인것 같다..
deque을 사용하여 pop(0) 대신 popleft를 사용하므로 더 빠르다
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2, H-Index (Python) (0) | 2021.06.12 |
---|---|
[프로그래머스] Level2, 타겟 넘버 (Python) (0) | 2021.06.12 |
[프로그래머스] Level1, 크레인 인형뽑기 게임 (Python) (0) | 2021.06.11 |
[프로그래머스] Level2, 더 맵게 (Python) (0) | 2021.06.10 |
[프로그래머스] Level2, 조이스틱 (Python) (0) | 2021.06.10 |
댓글