프로그래머스 - 스택/큐 - 프린터
문제
입력
나의 처음 코드
이 문제는 큐에 관련된 문제이다. 우선순위와 순서에 맞춰 인쇄를 해주는 것이다. 처음 문제를 접할 때는 어떠한 자료구조를 써서 문제를 해결해나가야 할지 고민을 해야한다. 우리는 ‘큐’를 쓸것이고, 지금 검사하는 우선순위 보다 큰 우선순위가 있는지 없는지 존재의 여부를 알아야할 것이다. 나는 여기서 check_arr를 써서 특정 우선순위를 가지고 있는 인쇄물들의 갯수를 저장하였다. 따라서 내가 검사하는 인쇄물이 제일 높은 우선순위라면, pop을 해주고 우선순위를 알면되는 것이다.
def solution(priorities, location):
answer = 0
check_arr = [0] * 10
#우선순위 순서를 가지고 있는 list
loc_key = [i for i in range(len(priorities))]
#우선순위를 가지고 있는 list
loc_val = [i for i in priorities]
pop_idx = 1
#우선순위를 가지고 있는 원소의 갯수 체크
for i in priorities:
check_arr[i] += 1
while loc_val:
items_key = loc_key.pop(0)
items_val = loc_val.pop(0)
#지금 검사하는 인쇄물의 우선순위가 제일 높을 떄
if sum(check_arr[items_val + 1 :]) == 0:
if items_key == location:
return pop_idx
check_arr[items_val] -= 1
pop_idx += 1
#지금 검사하는 인쇄물보다 큰 우선순위가 있을 때
else:
loc_key.append(items_key)
loc_val.append(items_val)
return pop_idx
직관적으로 큐와 스택을 쓰는 문제는 알고리즘을 어떠한 식으로 구성하는지 보다는, 자료 구조를 어떠한 식으로 구성하여 문제의 요건을 충족할 것인가를 생각하면 좋을 것 같다.