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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr


내 풀이

 

 

def solution(priorities,location):
    M = max(priorities)
    answer=1
    while True:
        tem = priorities.pop(0)
        if M == tem:
            if location ==0:
                return answer
            else:
                answer +=1
                location -=1
            M = max(priorities)
            
            
        else:
            priorities.append(tem)
            if location==0:
                location = len(priorities)-1
            else:
                location -=1
    return 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): //q[1]의 요소중 단 하나라도 cur[1]보다 크다면
            queue.append(cur) 
        else:
            answer += 1
            if cur[0] == location:
                return answer

공부를 똑바로 안한 티가난다.

부끄럽지만 any라는 문법을 처음보았다.

그래서 정리해본 any 의 뜻과 사용법

 


단 하나의 요소라도 조건을 만족하면 참을 리턴한다. 비어있으면 거짓을 리턴한다.
모든 요소가 조건을 만족할 때만 참을 리턴한다.


전체적으로 문제가 어렵지는 않았는데 소요시간이 너무 오래걸렸다.

한시간 이상은 쓴거같다. 다시 좀 공부에 매진해야 할 시간이 돌아온거같다.

'취준 > 프로그래머스' 카테고리의 다른 글

소수 찾기 - 파이썬  (0) 2022.07.02
가장 큰 수 - 파이썬  (0) 2022.07.01
튜플 - 파이썬  (0) 2022.06.23
뉴스 클러스터링 - 파이썬  (0) 2022.06.15
괄호 변환 - 파이썬  (0) 2022.06.13

+ Recent posts