프로그래머스 - 프린터

Minji·2022년 6월 6일
0

코딩테스트 연습

목록 보기
10/11

문제

프로그래머스 - 프린터

해결방법

def solution(priorities, location):
    answer = 0 #프린트 한 횟수
    # 다 뽑을 떄 까지(프린트 대기 문서가 있는 동안)
    while priorities:
        length=len(priorities)
        # 지금 뽑을지말지 고민하는 문서
        cur=priorities.pop(0)
        # 일단 pop 했으니까 위치 -1
        location-=1
        # 우선순위 문서가 있는지 확인
        for j in priorities:
        	#있으면
            if cur<j:
            	# 고민하던 문서 넣고
                priorities.append(cur)
                # 뽑은게 아니기 때문에 위치 맨 뒤로
                if location==-1:
                    location=length-1
                break
        # 만약 길이가 달라졌으면 뽑힌거니까
        if length!=len(priorities):
        	#뽑은 갯수+1
            answer+=1
        # 원하는 문서를 뽑았으면
        if location==-1:
        	#몇번째로 뽑았는지 return
            return answer
    return answer

다른 사람 풀이

any 사용
python에는 any(), all() 함수가 있음
any(): 하나라도 True 인게 있으면 True
all(): 모두 True면 True 반환

cur = 3
temp = [1,3,6,2]
if any(cur<num for num in temp):
	print("There exist number that is larger than 3")

와 같은 방법으로 사용할 수 있다.

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
            
profile
매일매일 성장하기 : )

0개의 댓글