사용 언어 - 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
'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글
[프로그래머스 lv 2] 주식가격 (0) | 2023.01.26 |
---|---|
[프로그래머스 lv 2] 다리를 지나는 트럭 (1) | 2023.01.26 |
[프로그래머스 lv 2] 올바른 괄호 (0) | 2023.01.25 |
[프로그래머스 lv 2] 기능개발 (0) | 2023.01.25 |
[프로그래머스 lv 1] 같은 숫자는 싫어 (0) | 2023.01.25 |
댓글