본문 바로가기
  • Trace
취업/알고리즘이야

프로그래머스 > 스택/큐 > 프린터

by seleuchel 2022. 3. 19.

리스트로 큐를 구성하는 것보다, deque를 사용하여 큐를 만드는 것이 더 시간 효율성이 좋다고 들었다. (나xx님 유툽)

 

조건을 지정할 때, 초기에 꽤나 까다로웠다. 

같은 우선순위를 가진 작업 중 내가 원하는 작업을 어떻게 구별할 것인지에서 고민을 했었는데, 

아래 두 요소로 풀 수 있었다.

첫번째 : 큐에서의 최대 우선순위

두번째 : 내 작업의 현재 인덱스 위치

 

일단, 작업물 중 최대 우선순위가 무엇인지 파악

전체 반복문에서

무조건 하나를 pop 하고 생각한다.

1) 최대 우선순위가 내 작업물 우선순위랑 동일한가?

1.1) 내 작업물은 pop된 작업물과 동일한 인덱스인가?

1.1 else ) 최대 우선순위이면 일단 작업 수행

1 else ) pop한 작업물을 뒤로 옮긴다.

 

각 과정에서 필요한 내 작업물 index 조정.

작업물이 뒤로 이동할 때, index가 음수가 되므로(여기 계산 상) 양수로 바꿔주었다.