프로그래머스 알고리즘: 프린터 (lv2)

sen·2022년 9월 16일
0

https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3


def solution(priorities, location):
    answer = 0
    idx = 0
    len_priorities = len(priorities)
    
    while True:
        if idx == len_priorities:
            idx = 0 # priorities를 순환
            
        for i in range(len_priorities):
            if i != idx and priorities[idx] < priorities[i]:
                # 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면
                idx += 1 # idx를 인쇄하지 않고 넘어감
                break
        else:
            # idx를 인쇄
            priorities[idx] = -1
            answer += 1
            if idx == location: # 내가 인쇄를 요청한 문서
                return answer
        
    return answer

  • 시간복잡도 O(N^2) 으로 추정..인데 확신이 안 섬
  • 인덱스를 같이 스택에 저장해 문제에서 요구한 대로 풀면 간단하지만 스택으로 변환하는 데 드는 시간을 줄이고자 해봤음
    • 그래봤자 원소 개수가 100개 이하이니 별 차이는 없을 것 같다
profile
𝙝𝙞 𝙩𝙝𝙚𝙧𝙚 😎

0개의 댓글