본문 바로가기
Algorithm/스택&큐&덱&힙

[프로그래머스 lv 2] 프린터

by HANNI하니 2023. 1. 26.

사용 언어 - Python3

문제 - 프린터

 

프로그래머스

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

programmers.co.kr

 

 

정답

인덱스와 원소를 함께 고려하는 큐 문제

(정답 맞춘 여부 X / 코드 풀이)

1. enumerate() 인덱스와 원소를 동시에 접근하여 큐를 만든다.

priorities = [2,1,3,2] 인 경우, queue = [(0,2),(1,1),(2,3),(3,2)] 가 된다.

2.큐의 맨 왼쪽 값을 cur에 저장한다. cur = (0,2)

3.1. any() 사용하여 cur[1] < q[1]인 경우가 하나라도 있으면 cur를 큐에 append한다.

 2보다 더 중요한 3짜리 문서가 있으므로 (0,2)는 큐의 맨 뒤로 이동하게 된다.

3.2. 그렇지 않다면, answer += 1 하면서 answer 변수를 통해 몇번째로 return 되는지 카운트한다.

만약 cur[0] 인덱스가 구하려는 location 인덱스와 같다면, answer를 return한다.

 

# 다른 사람의 풀이
def solution(priorities, location):
    queue =  [(i,p) for i,p in enumerate(priorities)]
    answer = 0
    while True:
        cur = queue.pop(0)
        if any(cur[1] < q[1] for q in queue):
            queue.append(cur)
        else:
            answer += 1
            if cur[0] == location:
                return answer

 

 

 

백준에도 유사한 문제가 있다. 먼저 풀어본게 도움이 되었다.

 

 

[Python3] 백준 1966번 프린터 큐

1966번: 프린터 큐 (실버3, 큐) 문제 ★큐 문제★ 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된

rladuddms.tistory.com


레퍼런스

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글