728x90
반응형
문제
분석
무식하게 풀면 될것 같다.
1. 굳이 큐를 안쓰고 리스트를 사용 했다.
2. 리스트 3개를 만든다.
- A: 순차적으로 우선순위가 저장된 리스트
- B: 우선순위가 내림 차순으로 정렬된 리스트
- C: print 목록 리스트
3. A 의 첫번째 우선순위와 B 의 우선순위가 같다면 출력
그렇지 않으면 A 의 앞에걸 뒤에 저장
동시에 C 도 동일한 방법으로 업데이트.
4. 만일 A 의 우선 순위와 B 의 우선순위가 같다면
앞에있는걸 삭제 하고 삭제 된것이 원하는 target 이라면
index를 찾고 중단한다.
구현
import java.util.*;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Collections;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
int ascii2 = (65+location);
String targetName = new Character((char) ascii2).toString();
List<Integer> priorityQue = new ArrayList<>(priorities.length);
List<String> printList = new ArrayList<>(priorities.length);
List<Integer> sortedQue = new ArrayList<>(priorities.length);
for(int i = 0; i < priorities.length; i++) {
priorityQue.add(priorities[i]);
sortedQue.add(priorities[i]);
int ascii = (65+i);
String str = new Character((char) ascii).toString();
printList.add(str);
}
Collections.sort(sortedQue, Collections.reverseOrder());
int printedNum = 0;
while(!priorityQue.isEmpty()) {
int prioty = priorityQue.get(0);
int sorted = sortedQue.get(0);
String printName = printList.get(0);
if(prioty == sorted) {
printedNum ++;
priorityQue.remove(0);
sortedQue.remove(0);
printList.remove(0);
if (targetName.equals(printName)) {
answer = printedNum;
break;
}
} else {
priorityQue.remove(0);
priorityQue.add(prioty);
printList.remove(0);
printList.add(printName);
}
}
return answer;
}
}
결과
728x90
반응형
'Algorithm > 프로그래머스 알고리즘' 카테고리의 다른 글
[프로그래머스] 입국심사 (0) | 2021.07.28 |
---|---|
[프로그래머스] 짝지어 제거하기 (0) | 2021.07.26 |
[프로그래머스] 타겟 넘버 (0) | 2021.07.23 |
[프로그래머스] 키패드 누르기 (0) | 2021.07.22 |
[프로그래머스] 네트워크 (0) | 2021.07.15 |
댓글