본문 바로가기
알고리즘/프로그래머스 level 1,2

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

by 코딩개미뚠뚠 2021. 4. 17.
반응형

<내 풀이>

def solution(priorities, location):
    answer = 0
    while True:
        max_num=max(priorities)
        for i in range(len(priorities)):
            if max_num==priorities[i]:
                answer+=1
                priorities[i]=0
                max_num=max(priorities)
                if location==i:
                    return answer

처음에 리스트의 max값을 구해주고 돌아가며 해당 값이 max값인지 확인한다.

그리고 max값이면 그 자리 값을 0으로 바꾸고 answer에 1 더해준다.

다시 max값을 재설정해주고 for문을 돌린다.

구하려는 idx 즉 location 차례가 오면 answer을 반환해준다!

간단히 풀 수 있었지만 다른 사람의 풀이를 보았을 때는 내 코드가 효율적이라고는 생각되지 않는다.

 

<다른사람의 풀이>

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

enumerate()함수를 사용한 것이 좋은 접근인 것 같다. 

그리고 any()를 사용하여 불필요한 과정을 생략한 것이 인상적이었다.

 

알고는 있어도 익숙하지 않아서 활용을 잘 못하는 것이 문제였던 것 같다.

반응형

댓글