본문 바로가기

Coding Test/Programmers

[프로그래머스/파이썬] 프린터

728x90

 

나의 풀이

def solution(priorities, location):
    count = 0
    p_sort = priorities.copy()
    p_sort.sort(reverse=True)

    while priorities:
        if priorities[0] < p_sort[0]:
            priorities.append(priorities.pop(0))
            if location == 0:
                location = len(priorities) - 1
            else:
                location -= 1
        elif location == 0:
            count += 1
            break
        else:
            priorities.pop(0)
            p_sort.pop(0)
            location -= 1
            count += 1
    return count

 

 

enumerate와 any를 사용한 풀이

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

 

 

나와 유사하지만 Max를 사용한 풀이

def solution(p, l):
    ans = 0
    m = max(p)
    while True:
        v = p.pop(0)
        if m == v:
            ans += 1
            if l == 0:
                break
            else:
                l -= 1
            m = max(p)
        else:
            p.append(v)
            if l == 0:
                l = len(p)-1
            else:
                l -= 1
    return ans

 

 

반응형