본문 바로가기
*Algorithm/Programmers_Level2

[programmers] 프로그래머스 Level2 프린터(파이썬 Python)

by codinguser 2021. 5. 9.

프로그래머스
(주)그렙

 

[programmers] 프로그래머스 Level2 프린터

(파이썬 Python)

 

* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제

 

 

 

1) 문제


프로그래머스 프린터 파이썬

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

 

 

 

 

2) 코드


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from collections import deque
 
def solution(priorities, location):
    
    # queue = []
    queue = list(deque())
    
    for i in range(len(priorities)) :
        queue.append([priorities[i], i])
    
    answer = 0
    
    while(len(queue) != 0) :
        first = queue.pop(0)
        first_priority = first[0]
        
        is_highest = True
        
        for i in range(len(queue)) :
            if (first_priority < queue[i][0]) :
                is_highest = False
                break
                
        if (is_highest == True) :
            answer += 1
            
            if (first[1== location) :
                return answer
        else :
            queue.append(first)
    
    return answer
cs

 

 

 

 

 

 

 

3) 풀이 과정


이중리스트를 사용하여 priorities의 각 값과 인덱스를 뭉텅이로 넣을 것.

[priorities[i], i]

 

 

 

 

 

 

 

< < 사고 과정 > >


Q) 현재 대기목록의 어떤 위치에 있는지 알려주는(location), 내가 인쇄를 요청한 문서가 몇 번 째로 인쇄되는지 Return

 

직접 손으로 해볼 것.

 

[2,1,3,2]

A,B,C,D

 

[1,3,2,2]

B,C,D,A

 

[3,2,2,1]

C,D,A,B

 

위의 3가지를 잡고 구현을 하면 쉽게 풀리는 문제

 

 

 

 

 

 

 

4) 정리 노트


1
2
3
4
5
6
7
8
9
list = [[1,3],[2,4],[3,5]]
 
for i in range(len(list)):
  print(list[i])
  # 결과 출력
  # [1,3]
  # [2,4]
  # [3,5]
 
cs



Q) 만약 각 리스트의 맨 앞에 있는 1,2,3을 출력하고 싶다면?

 

 

1
2
3
4
5
6
7
8
9
10
11
12
list = [
[1,3],
[2,4],
[3,5]
]
 
for i in range(len(list)):
  print(list[i][0])
  # 결과 출력
  # 1
  # 2
  # 3
cs

댓글