티스토리 뷰
반응형
문제
- 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
- 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
- 그렇지 않으면 J를 인쇄합니다.
조건
입출력 예제
솔루션
- 먼저 문서의 인덱스와 중요도를 가지고 있는 문서 객체를 만드는 클래스를 구현한다.
- 클래스 생성 이유 ?) 문서의 인덱스와 중요도를 함께 다루기 위해서 (배열 2개를 사용할 경우 굉장히 번거로울 거라 생각).
- idx는 중요도가 높은 것부터 차례대로 접근하기 위한 인덱스이며, 순차적으로 문서를 뽑아내는 것이므로 큐 자료구조를 사용한다.
- 중요도가 담겨 있는 priorities 배열을 순서대로 모두 큐에 삽입해준다 (Offer()).
- priorities 배열을 오름차순 정렬해준다 (Arrays는 내림차순을 할 경우, int -> Integer로 바꿔줘야 함).
- Why 정렬 ?) idx를 이용하여 중요도가 높은 것들을 순서대로 접근할 수 있도록 하기 위해서.
- 조건이 만족 될 때까지 반복문을 계속 실행한다 (조건 : location의 문서가 뽑혔는지).
- 큐에서 문서를 하나 뽑아 (Poll()) cur객체에 넣는다.
- cur의 중요도와 priorities[idx]가 같다면 (현재 남은 문서들 중 중요도가 가장 높은 문서라는 것), 중요도가 그 다음으로 높은 문서인지 비교하기 위해 idx를 1 감소시킨다.
- 그런데 현재 뽑은 문서 cur의 인덱스가 location과 동일하다면 (조건이 만족), 지금 뽑힌 순서를 answer에 담아주고 루프를 빠져나간다.
- 같지 않다면, 뽑은 문서를 다시 큐에 집어넣는다 (Offer()).
- 루프를 빠져나온 뒤, answer를 반환한다.
Code
문서의 인덱스, 중요도를 저장하는 객체를 만드는 Doc 클래스
solution 함수
결과
반응형
'Algorithm > Solution' 카테고리의 다른 글
[프로그래머스] - 주식가격 (0) | 2019.11.27 |
---|---|
[프로그래머스] - 모의고사 (0) | 2019.11.27 |
[프로그래머스] - 탑 (0) | 2019.11.27 |
[프로그래머스] - 캐시 (0) | 2019.11.26 |
[프로그래머스] - 짝지어 제거하기 (0) | 2019.11.25 |
댓글