def solution(priorities, location):
answer = 0
realLocation = [] ## 중요도 인쇄순서
sortPrint = list(range(len(priorities))) ## [1] = A, [2] = B...
while len(priorities) > 0:
if priorities[0] < max(priorities): ## 우선순위가 밀린다면
priorities.append(priorities[0])
del priorities[0]
sortPrint.append(sortPrint[0])
del sortPrint[0]
elif priorities[0] == max(priorities):
del priorities[0]
realLocation.append(sortPrint[0])
del sortPrint[0]
answer = realLocation.index(location) + 1
return answer
* https://programmers.co.kr/learn/courses/30/lessons/42587
아이디어
- priorities가 변하더라도 내 문서의 위치(location)를 찾을 수 있어야 함
- priorities의 최초 배열 순서가 문서의 순서이므로 이를 새로운 리스트로 저장(sortPrint)
- priorities의 max값보다 작으면 index:0인 요소를 뒤로 추가하고, index:0은 지운다
- 동시에 문서의 순서가 담긴 리스트의 index:0인 요소도 뒤에 추가하고 지운다.
- priorities의 max값을 만나면, 출력이 진행된다.
- priorities의 index:0 값을 지우고, 현재 문서 번호인 sortPrint의 index:0을 출력 순서를 담기 위해 생성해둔 리스트(realLocation)에 추가한다.
- 이 과정이 반복되어 priorities의 길이가 0 이하가 되면, 반복문이 종료된다.
- 출력 순서가 담긴 리스트(realLocation)에서 최초 매개변수 location에 담긴 내 문서의 위치의 index 값에 1을 더한 것이 최종적인 내 문서의 인쇄순서이다.
'CODE > Python' 카테고리의 다른 글
백준 1991 트리 순회 (0) | 2022.05.07 |
---|---|
이코테 상하좌우 (0) | 2022.04.24 |
프로그래머스 2주차 Python (0) | 2021.08.30 |
프로그래머스 완주하지 못한 선수 Python (0) | 2021.07.29 |
코드업 6098 성실한 개미 Python (0) | 2021.07.28 |
댓글