프로그래머스_프린터_python
2021. 7. 25. 17:35ㆍ코딩테스트
반응형
https://programmers.co.kr/learn/courses/30/lessons/42587
중요도 순서로 인쇄.
location 문서가 몇번째로 인쇄되는지
숫자 클수록 중요.
from collections import deque
def solution(priorities, location):
answer = 0
d = deque([(v,i) for i,v in enumerate(priorities)])
while len(d):
item = d.popleft()
if d and max(d)[0] > item[0]:
d.append(item)
else:
answer += 1
if item[1] == location:
break
return answer
[코드1]
deque를 사용. 반복문 사용해서 가장 먼저 들어온 값부터 체크함.
최대값보다 현재값이 작으면 맨뒤에 붙임. 크거나 같다면 순서인덱스만 추가. 현 인덱스가 타겟과 같다면 리턴
enumerate : 배열의 인덱스도 가져올수 있음.
deque)
append, popleft
*보통 queue는 선입선출
deque는 양방향 큐. 앞, 뒤 양쪽 방향에서 엘리먼트(element)를 추가하거나 제거할 수 있다
- deque.append(item): item을 데크의 오른쪽 끝에 삽입한다.
- deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다.
- deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
- deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
- deque.remove(item): item을 데크에서 찾아 삭제한다.
- deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).
----------------------
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
[코드2]
queue에 데이터 저장.(선입선출)
반복문에서 queue의 값을 가져옴.
가져온 값의 우선순위가 큐 내부의 다른 데이터보다 작으면 queue에 다시 append.
크거나 같다면 순서인덱스를 추가함. 현 인덱스가 타겟과 같다면 리턴.
any() : 하나라도 True인게 있으면 True. OR
all() : 모두 True여야 True 반환. AND
->param은 iterable한 객체를 받음. 이 객체를 돌면서 조건을 검사해 답을 True/False의 답을 반환.
반응형
'코딩테스트' 카테고리의 다른 글
프로그래머스_다리를 지나는 트럭_python (0) | 2021.07.29 |
---|---|
프로그래머스_주식가격_python (0) | 2021.07.27 |
프로그래머스_기능개발_python (0) | 2021.07.25 |
프로그래머스_베스트앨범_python (0) | 2021.07.21 |
프로그래머스_위장_python (0) | 2021.07.20 |