본문 바로가기
CODE/Python

프로그래머스 프린터 Python

by zerozero\base 2021. 12. 16.
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

아이디어

  1. priorities가 변하더라도 내 문서의 위치(location)를 찾을 수 있어야 함
    • priorities의 최초 배열 순서가 문서의 순서이므로 이를 새로운 리스트로 저장(sortPrint)
  2. priorities의 max값보다 작으면 index:0인 요소를 뒤로 추가하고, index:0은 지운다
  3. 동시에 문서의 순서가 담긴 리스트의 index:0인 요소도 뒤에 추가하고 지운다.
  4. priorities의 max값을 만나면, 출력이 진행된다.
  5. priorities의 index:0 값을 지우고, 현재 문서 번호인 sortPrint의 index:0을 출력 순서를 담기 위해 생성해둔 리스트(realLocation)에 추가한다.
  6. 이 과정이 반복되어 priorities의 길이가 0 이하가 되면, 반복문이 종료된다.
  7. 출력 순서가 담긴 리스트(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

댓글