https://school.programmers.co.kr/learn/courses/30/lessons/42587
[풀이]
def solution(priorities, location):
cnt = 0
while len(priorities) != 0:
if max(priorities) > priorities[0]:
priorities.append(priorities.pop(0))
location = (location - 1 + len(priorities)) % len(priorities)
else :
cnt += 1
if location == 0:
return cnt
else :
priorities.pop(0)
location = (location - 1 + len(priorities)) % len(priorities)
- priorities의 길이가 0이 아닐 때
- priorities의 최대값보다 priorities의 첫번째 인덱스 값이 작다면
- priorities의 맨 뒤에 priorities를 붙인다.
- 이 때 location은 항상 하나씩 앞으로 가기 때문에 나머지를 이용해서 값을 저장한다.
- priorities의 최대값보다 priorities의 첫번째 인덱스 값보다 크거나 같다면
- 프로세스 실행수(cnt)를 1 늘리고
- location이 0인지 확인한다.
- 만약 location이 0이라면 cnt를 리턴하고 프로그램 종료
- 아니라면 프로세스를 실행(첫번째 인덱스 값을 날리고) location 값을 업데이트한다.
[풀이 후기]
작업 순서를 고려하는 로직은 금방 짰으나, cnt와 location의 위치를 어떻게 저장할지 고민을 많이했다. 확실히 스택/큐는 어느정도 이해가 된 것 같다.
'코딩테스트 스터디 > 프로그래머스' 카테고리의 다른 글
[LV2 그리디] 구명보트 (4) | 2023.07.17 |
---|---|
[LV2 스택/큐] 다리를 지나는 트럭 (0) | 2023.07.17 |
[LV2/스택/큐] 올바른 괄호 (0) | 2023.07.17 |
[LV2/스택/큐] 기능개발 (0) | 2023.07.17 |
[LV3/SQL] 헤비 유저가 소유한 장소 (3) | 2023.07.15 |