👨🏻‍💻알고리즘/프로그래머스

[프로그래머스] Lv2. 프린터

waveofmymind 2023. 1. 22. 10:43

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

✍🏻코드

from collections import deque

def solution(priorities, location):
    q=[(i,p) for i,p in enumerate(priorities)]

    cnt = 0
    while True:
        tmp = q.pop(0)
        if any(tmp[1] < x[1] for x in q):
            q.append(tmp)
        else:
            cnt += 1
            if location == tmp[0]:
                break
    return cnt

💡풀이

  • location의 위치를 조정해서 푸는 방법으로 처음에 작성했으나, 계속 시간 초과가 발생해서 풀이를 보게 되었다.
  • priorities 배열을 enumerate로 인덱스와 같이 큐에 저장해두고, tmp의 우선순위가 큐에 있는 어떤 수보다 작으면 다시 큐에 넣는다
  • any()는 괄호 안의 조건식이 하나라도 만족하면 True를 반환한다. 즉 or이라고 생각하면 된다.
  • 그리고 만약 모든 수보다 tmp의 우선순위가 크면, 같이 저장해둔 인덱스를 location과 비교해서 같으면 cnt를 반환하면 된다.