본문 바로가기

카테고리 없음

프로그래머스 Level 2 - 프린터

내 정답:

 

def rearrange(priorities, location):
    for i in range(len(priorities)):
            if priorities[i] == max(priorities):
                priorities = priorities[i:]+priorities[:i]
                location = location - i
                break
    return location, priorities
def resetLocation(location, length):
    if location < 0:
        location += length
    return location
def solution(priorities, location):
    t = 1
    pr = priorities[location]
    if max(priorities) != pr:
        while max(priorities) != pr:
            location, priorities = rearrange(priorities,location)
            location = resetLocation(location, len(priorities))
            priorities.pop(0)
            location -= 1
            print(priorities)
            t += 1
    print(location)
    for i in range(location):
        if priorities[i] == pr:
            t += 1
    return t

 

다른 사람들의 정답:

 

훨씬 간결하고 좋은 정답

 

any는 반복 가능 객체 중 참인 요소가 있으면 True를 반환하는 내장 함수이다.

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