프로그래머스 - 프린터

박상진·2022년 2월 9일
0

프로그래머스

목록 보기
53/65
post-thumbnail

자세한 설명은 링크 참고

대기열을 조건에 맞게 배열하고 주어진 배열에 주어진 인덱스가 몇번째로 출력되는지 맞추는 문제이다.

풀이

풀이 참고 : https://eda-ai-lab.tistory.com/461

def solution(priorities, location):
    prt = []
    order = []

    for i, j in enumerate(priorities) :
        prt.append(j)
        order.append(i)

    k = 0

    while True :

        if prt[k] < max(prt[k+1:]) :
            prt.append(prt.pop(k))
            order.append(order.pop(k))

        else :
            k += 1

        if prt == sorted(prt, reverse=True) :
            answer = order.index(location) + 1
            break

    return answer
  1. 문제에 따라 중요도가 가장 크지 않으면 맨 뒤로 보내줘야 하지만, 주어진 리스트의 인덱스를 기억 해놔야 하기 때문에 리스트를 2개로 놓는다.
  2. prt리스트의 k번째 요소값이 나머지보다 크지 않다면 맨 뒤로 보내준다.
  3. prt리스트의 k번째 요소값이 나머지보다 크다면 k값에 1을 더해줘서 큰 숫자부터 차례대로 정렬되게 만들어준다.
  4. 계속 정렬되면 결국에는 sort된 리스트와 같아지게된다.
  5. 이 때 인덱스 값의 인덱스를 찾아서 +1을 해준다
    • +1은 인덱스를 0부터 시작하기 때문에 필요

느낀점

  1. 한 개의 리스트 안에서 크기를 비교할 수 있는 방법을 배웠다.
  2. 다른 사람의 코드를 이해하는 것도 쉬운 일이 아니다.
profile
개발자가 되고싶당

0개의 댓글