본문 바로가기

B/Coding Test

[프로그래머스] 큐/스택 - 프린터

 

전형적인 큐를 활용하는 문제.

콜렉션에서 deque를 굳이 활용해서 써봤다.. ㅎㅎ

def solution(priorities, location):
    
    from collections import deque
    
    q = deque(priorities)
    name = deque([i for i in range(len(priorities))])
    sheet = []
    
    while len(q)!=0:
        if q[0] < max(q):
            q.append(q[0])
            q.popleft()
            name.append(name[0])
            name.popleft()
        else:
            q.popleft()
            sheet.append(name[0])
            name.popleft()
            
    for num, loca in enumerate(sheet):
        if loca==location:
            return num+1

 

이것도 거의 한시간 넘게 고민해서 짠거 같다..

특히 반복문 과정에서 else에 sheet에 name[0]를 추가해줘서 순서를 가져와야 했던게 안습이었다..

 

 

 

굉장히 아름다운 풀이 . . .

저렇게 큐 안에 튜플형태로 저장시키면서 이름값을 추가해준 것과,

if 문에서 any를 활용해서 가장 큰 것보다 작으면 뒤에 붙여주고,

아니면 answer에 1을 더해주고 location과 확인해서 맞으면 정답을 리턴하는게 굉장히 심플했다.

어케 이런걸 짜지? ?

나도 재야의 고수가 되고파 !