LEVEL2/프린터

Q·2021년 8월 8일
0

문제 설명


전체 코드

def solution(priorities, location):         
    answer = 0

    arr1 = [c for c in range(len(priorities))]
    arr2 = priorities

    i = 0
    while True:
        if arr2[i] < max(arr2[i+1:]):
            arr1.append(arr1.pop(i))
            arr2.append(arr2.pop(i))
        else:
            i += 1

        if arr2 == sorted(arr2, reverse = True):
            break

    return arr1.index(location) + 1

해결 방법

스택과 큐의 문제라는 생각으로 풀면 쉽게 풀 수 있는 문제이다. arr1에는 priorities의 인덱스를 넣어주고 arr2에는 priorities를 얕은복사를 해준다. 그 후 인덱스를 지칭하는 변수 i를 0으로 초기화 해주고 while True로 반복문을 돌린다. 여기서 arr2의 인덱스를 i와 i+1에서 끝까지의 최댓값 max(arr2[i+1:])를 비교하여 max(arr2[i+1:])가 더 크다면 그 인덱스를 pop하여 arr2의 맨 뒤에 append를 해주고 그 인덱스의 리스트인 arr1도 똑같이 해준다. 그러고 arr2의 값이 priorities의 내림차순과 똑같아 질때 break해서 while문을 끝내고 location의 값을 arr1의 인덱스에서 +1하여 return 해준다.

profile
Data Engineer

0개의 댓글

관련 채용 정보