일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- 패스트캠퍼스
- R
- 패캠챌린지
- 패스트캠퍼스후기
- SKT
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- 알버트
- albert
- 직장인인강
- AI
- 직장인자기계발
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- Today
- Total
제주 탈출 일지
[python3] 프로그래머스 레벨 2 - 프린터 본문
https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
# 최종 코드
from collections import deque
def solution(priorities, location):
answer = 0
a = deque(priorities)
b = location
while True :
if len(a) == 1:
break
tmp = a.popleft()
if tmp >= max(a):
answer += 1
if b == 0 :
return answer
else :
if b == 0 :
b = len(a) - 1
else:
b -= 1
else :
a.append(tmp)
if b == 0 :
b = len(a) - 1
else:
b -= 1
return answer + 1
deque를 이용해서 문제에 주어진
1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다.
이 조건을 구현했다. 단순히 리스트를 이용해도 구현할 수 있겠지만, 생각하기 편하게 구현하는 것이 좋아서리..,,
+ len(a) == 0 로 탈출조건 설정을 하면 안되는 이유가 리스트 내부의 max(a)가 없기 때문에 무한 루프 or 에러가 나게 됨.
다른사람의 풀이
1. any를 사용해서 비교를 편하게 할 수도 있었다. (any -> iterable 객체에서 True가 하나라도 있다면 True 반환, 만약 empty라면 False 반환)
2. enumerate를 이용해서 몇 번쨰로 반복문이 돌아가고 있는지 확인할 수있다. (enumerate 사용 시 (index, value) 형태의 튜플로 값이 돌아감.)
3. 고수들은 리스트 컴프리핸션을 자유롭게 사용한다. 연습을 많이 해야함 . ㅎ...ㅎ
queue = [(i,p) for i,p in enumerate(priorities)]
'코딩 테스트' 카테고리의 다른 글
[python3] 프로그래머스 레벨 2 - H-Index (0) | 2021.06.20 |
---|---|
[python3] 프로그래머스 레벨 2 - 주식가격 (0) | 2021.06.18 |
[python3] 프로그래머스 레벨 2 - 기능개발 (0) | 2021.06.17 |
[python3] 프로그래머스 레벨 2 - 카펫 (0) | 2021.06.15 |
[python3] 프로그래머스 레벨 2 - 소수 찾기 (0) | 2021.06.15 |