큐 자료구조를 사용한 풀이
큐 사용시에 인덱스로 접근이 불가능하기 때문에 queue.isEmpty를 활용한 연산 잘 고민해봐야겠다.
문제
- 프로그래머스 > 코딩테스트 연습 > 스택/큐 > 프린터
- https://programmers.co.kr/learn/courses/30/lessons/42587
풀이
1. 중요도와 위치를 기록하기 위한 클래스(Mock)생성
2. 큐에 입력 후 반복문 실행
3. 이중 반복문을 통하여 맨 앞의 중요도 보다 큰 중요도 존재 시 마지막으로 이동 제일 큰 수라면 카운트 증가
4. 제일큰수 이면서 location변수의 할당된 값과 동일하다면 리턴
제일 햇갈렸던건 무한반복이 걸리지 않을까 고민했지만 어쨋든 정렬과정에서 location이 발생할테니까
상관없다.
코드
class Mock {
int priorities;
int location;
public Mock(int priorities, int location) {
this.priorities = priorities;
this.location = location;
}
}
public int solution(int[] priorities, int location) {
Queue<Mock> queue = new LinkedList<Mock>();
int answer = 0;
for (int i = 0; i < priorities.length; i++) {
queue.add(new Mock(priorities[i], i));
}
int cnt = 0;
while(!queue.isEmpty()) {
Mock task = queue.poll();
boolean flag = false;
for(Mock mock : queue) {
if(task.priorities < mock.priorities) {
flag = true;
}
}
if(flag) {
queue.add(task);
}else {
cnt++;
if(task.location == location) {
answer = cnt;
break;
}
}
}
return answer;
}
'알고리즘' 카테고리의 다른 글
[알고리즘] 다양한 정렬 알고리즘 (0) | 2022.04.28 |
---|---|
[알고리즘] 숫자를 뒤집기 (0) | 2022.04.06 |
[프로그래머스] 모의고사 (0) | 2022.03.04 |
[프로그래머스] 주식가격 (0) | 2022.02.01 |
[프로그래머스] 기능개발 (0) | 2022.01.21 |
댓글