리스트로 큐를 구성하는 것보다, deque를 사용하여 큐를 만드는 것이 더 시간 효율성이 좋다고 들었다. (나xx님 유툽)
조건을 지정할 때, 초기에 꽤나 까다로웠다.
같은 우선순위를 가진 작업 중 내가 원하는 작업을 어떻게 구별할 것인지에서 고민을 했었는데,
아래 두 요소로 풀 수 있었다.
첫번째 : 큐에서의 최대 우선순위
두번째 : 내 작업의 현재 인덱스 위치
일단, 작업물 중 최대 우선순위가 무엇인지 파악
전체 반복문에서
무조건 하나를 pop 하고 생각한다.
1) 최대 우선순위가 내 작업물 우선순위랑 동일한가?
1.1) 내 작업물은 pop된 작업물과 동일한 인덱스인가?
1.1 else ) 최대 우선순위이면 일단 작업 수행
1 else ) pop한 작업물을 뒤로 옮긴다.
각 과정에서 필요한 내 작업물 index 조정.
작업물이 뒤로 이동할 때, index가 음수가 되므로(여기 계산 상) 양수로 바꿔주었다.
'취업 > 알고리즘이야' 카테고리의 다른 글
그리디 (0) | 2022.04.06 |
---|---|
remove 반복문 주의 (0) | 2022.04.06 |
헷갈림 : enumerate / iterator / generator (0) | 2022.04.02 |
프로그래머스 풀면서 느끼는 점 (0) | 2022.03.20 |
프로그래머스 > 해시 > 완주하지 못한 선수 (0) | 2022.03.19 |