bit가 눈 앞에서 왔다갔다

Py) 프로그래머스 42587 본문

Algorithm/Prob

Py) 프로그래머스 42587

헬린인형 2022. 1. 7. 01:07

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

 

1차

from collections import deque
def solution(priorities, location):
    answer = 0

    # tmp = priorities[location]
    deq = deque(priorities)
    while deq:
        first = deq.popleft()
        location -= 1       # 맨 앞을 뽑아내면 location의 크기가 즐어듦
        for i in deq :   # 남은 원소들 중 비교
            if i > first:
                deq.append(first)
                # location에 해당하는게 뒤로 간다면, location크기 늘어남
                if location == -1:
                    location = len(deq)-1   # location의 크기 +1
                break
        if first == max(priorities):
            break
        if location == -1:   # location이 맨앞이라면 while문 종료
            break

        # 다 돌았는데 없으면 pop
    answer = location + 2

    return answer

location값에서 순서를 조절해서 answer에 대입시키려고 했음

제출 전 실행할땐 통과하는데 제출하면 틀렸습니다가 뜬당,, ._.

생각해주지 못한 경우가 있는 것 같은데,, 생각이 안난다

 

#2차(검색,,)

from collections import deque

def solution(priorities, location):
    answer = 0
    deq = deque([(i, v) for v, i in enumerate(priorities)])
    # 원래는 순서가 앞, value가 뒤에 오지만, v,i를 바꿈
    while deq:
        first = deq.popleft()
        if deq and max(deq)[0] > first[0]:
            deq.append(first)
        else:
            answer += 1
            if first[1] == location:
                break

    return answer

이 코드는 answer로 움직이고, 처음부터 location에서 주어진 위치를 움직인다기 보다는 성공적으로 pop된 경우에 answer += 1을 한다.

deque를 튜플 형태로 사용해서 answer랑 튜플의 값이랑 비교한다.

deq에 원소가 하나 남았을 경우도 고려했다. 멋져,,

그렇게 생각하니까 훨씬 깔끔하다. 나도 잘하고 싶당

나중에 java 코드를 한번 봐야겠다 싶다. python에서는 저런 함수들이 있어서 갖다 쓸 수 있다지만 함수 없으면 어떻게 해야했을까 궁금함

 

*

deque에서 튜플

enumerate

https://www.daleseo.com/python-enumerate/

반응형

'Algorithm > Prob' 카테고리의 다른 글

Py ) 프로그래머스 60057 + 1/16다시풀기  (0) 2022.01.10
Py) 프로그래머스 42584  (0) 2022.01.07
Py) 프로그래머스 43165  (0) 2022.01.05
Py, Java) 프로그래머스 42576  (0) 2022.01.04
Py) 프로그래머스 42895  (0) 2022.01.03
Comments