문제
https://programmers.co.kr/learn/courses/30/lessons/42587
내가 푼 코드
def solution(priorities, location):
localist = [i for i in range(0, len(priorities))]
count = 0
while priorities:
maximum = max(priorities)
poppriorities = priorities.pop(0)
if poppriorities < maximum:
priorities.append(poppriorities)
localist.append(localist.pop(0))
else:
count+=1
delindex = localist.pop(0)
if delindex == location:
break
return count
location의 위치를 어떻게 해야할지 감이 안잡혀서 힌트를 보고 풀었는데 풀고나서 되게 찝찝했다.
location의 위치와 우선순위와 매핑하고 싶은데 마땅한 방법이 떠오르지않아서 리스트 한개 더 선언하였다.
내장함수 enumerate가 있는지도 모르고 max값을 뽑기위해 for문 돌리니까 시간 엄청 잡아먹었다.
공식문서에 나와있는 내장함수를 적극 이용해야겠다.
enumerate를 사용해 처음에 작성한 코드보다 두배 빠름
def solution(priorities, location):
printer = [(i,p) for i, p in enumerate(priorities)]
count = 0
while printer:
job = printer.pop(0)
if any(job[1] < other_job[1] for other_job in printer):
printer.append(job)
else:
count+=1
if job[0] == location:
break;
return count
'Problem Solving > CT-Python' 카테고리의 다른 글
[백준/그리디] 2217: 로프 - 파이썬 (0) | 2022.03.10 |
---|---|
[백준/그리디] 10610: 30 - 파이썬 (0) | 2022.03.08 |
[프로그래머스/스택] 다리를 지나는 트럭 - 파이썬 (0) | 2022.03.06 |
[프로그래머스] 소수찾기 - 파이썬 - 에라토스테네스의 체 (0) | 2022.03.03 |
[백준/스택] 1158: 요세푸스 문제 - 파이썬 (0) | 2021.09.23 |