상세 컨텐츠

본문 제목

[Python] 프린터

알고리즘 공부

by 독서와 여행 2021. 4. 20. 11:05

본문

이해가 안가는게 어제 뭐한다고 이걸 못 푼거지? 어려운 것도 아닌데 너무 어이없다.

집중을 좀 해야지. 방해되는 물건들을 최대한 치워야겠다.

def solution(priorities, location):
    answer = 0
    while(len(priorities) > 0):
        first_num = priorities[0]
        max_num = max(priorities)
        if (priorities.pop(0) != max_num):
            priorities.append(first_num)
            location -= 1                        #이게 문제임 location을 어떻게 해야할까? 
        else:
            if(location == 0):
                answer += 1
                return answer
            location -= 1   #여기서 뽑힌거임
            answer += 1

        if(location < 0):
            location = len(priorities) + location

솔직히 깔끔하지 못 한 코드이다. 게다가 처음에 문제를 이해하지 못 했다. 정렬하면서 뽑는게 아니라 그냥

바로 우선 순위 높은거 뽑는건줄 알았는데 조금은 복잡하게 생각해서.. 제발 문제좀 똑바로 읽자. 

이렇게 하는거면 위에 while을 그냥 true로 놔둬도 되겠다.

 

다른 사람의 풀이를 봐야지

deque를 통한 구현방식이 빠르다고 한다.

 

흠 인덱스도 그냥 저장해버렸구나

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

 

코틀린으로도 얼른 풀어봐야지

'알고리즘 공부' 카테고리의 다른 글

[Kotlin] 카펫  (0) 2021.04.28
[Kotlin] 기능개발  (0) 2021.04.19
[Kotlin] 키패드 누르기  (0) 2021.04.18
[Python] 실패율  (0) 2021.04.16
[Python] [Kotlin]프로그래머스 - 내적  (0) 2021.04.14

관련글 더보기

댓글 영역