문제
문제 풀이
부트캠프에서 Linked List를 이용하여 풀어보라고 하여 Linked List를 활용하여 처리해보고자 한다. 해당 문제에서 우선순위가 head에 오게 되면 해당 값을 출력하고 location값이 몇 번째로 출력하는지 return 해주면 되는 문제이다.
head에 있는 2값은 최우선 순위가 아니므로 tail로 위치를 이동. 같은 이유로 1도 뒤로 이동.
그렇게 뒤로 이동하다 보면 우선순위가 head로 오게 되는데 전체에서 출력을 하는 순번이 1번이므로 return을 1해준다.
나의 답안
자료구조는 LinkedList에 배열을 사용하여 처리 하였음. 뭐랄까 우선순위와 값을 둘 다 가질 수 있는게 무엇일까 고민하다 사용.
public static int solution(int[] priorities, int location) {
int answer = 0;
LinkedList<int[]> list = new LinkedList<>();
LinkedList<int[]> printList = new LinkedList<>();
for (int i = 0; i < priorities.length; i++) {
int[] arr = {i, priorities[i]};
list.add(arr);
}
while (list.size() != 0) {
boolean count = true;
for (int j = 1; j < list.size(); j++) {
if (list.get(0)[1] < list.get(j)[1]) {
list.offerLast(list.getFirst());
list.pollFirst();
count = false;
}
}
if (count) {
printList.offerLast(list.pollFirst());
}
}
for (int i = 0; i < printList.size(); i++) {
if (printList.get(i)[0] == location) answer = i + 1;
}
return answer;
}
'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글
올바른 괄호 (0) | 2023.03.26 |
---|---|
최솟값 만들기 (0) | 2023.03.26 |
JadenCase 문자열 만들기 (0) | 2023.03.26 |
최댓값과 최솟값 (0) | 2023.03.26 |
기능개발 (0) | 2023.03.14 |