티스토리 뷰
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
문제 설명
다음과 같은 규칙에 따라 프린터를 인쇄
문제에서 원하는 번호의 인쇄 명령이 언제 출력되는지 확인하는 것
가장 앞에 있는 문서를 뽑아서, 인쇄하거나 맨 뒤에 배치 -> deque 쓰기 아주 좋다
문제 풀이
규칙에서 알려준 대로 그대로 구현해주면 된다
deque 자료구조를 사용하면 앞에서 뽑고 뒤에 추가하는 등을 자유롭게 수행할 수 있다.
한 가지 주의할 점은, index 값을 같이 가지고 가야 한다는 것이다 -> location에 맞는 인덱스인지 봐야 하므로
배열의 크기가 최대 100이기 때문에 N^2 으로 순회해도 무방하다!
코드
from collections import deque
def solution(priorities, location):
priority_deque = deque(
[priority, index] for index, priority in enumerate(priorities)
)
answer = 0
printed_count = 0
while priority_deque:
now = priority_deque.popleft()
is_printable = True
for item in priority_deque:
p_value, p_index = item
if p_value > now[0]:
is_printable = False
priority_deque.extend([now])
break
if is_printable:
printed_count += 1
if now[1] == location:
answer = printed_count
break
return answer
기타
어제 푼 문제에 비해서는 비교적 pythonic 하게 짰던 것 같다! 좀 더 복잡한 문제에 도전해보자
'Problem Solving' 카테고리의 다른 글
프로그래머스 디스크 컨트롤러 (1) | 2022.01.17 |
---|---|
프로그래머스 더 맵게 (0) | 2022.01.16 |
프로그래머스 완주하지 못한 선수 (0) | 2022.01.16 |
프로그래머스 기능개발 (0) | 2022.01.10 |
프로그래머스 위장 (0) | 2022.01.10 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스택
- Python
- requests
- vscode
- 파이썬
- docker-compose update
- Javascript
- 삽질
- Remote
- SQL
- 백준
- django test
- 그리디
- factory_pattern
- 우선순위큐
- Til
- SSL
- endl을절대쓰지마
- 불필요한 값 무시하기
- Event Sourcing
- django testcase
- 힙
- cipher suite
- 코딩테스트
- 최대한 간략화하기
- BOJ
- jwt
- 위상정렬
- 이것도모르면바보
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함