
| 문제 | 레벨 | 정답률 |
|---|---|---|
| 두 개 뽑아서 더하기 | Lv.1 | 70% |

import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
PriorityQueue<Integer> queue = new PriorityQueue<>();
for(int i = 0; i<numbers.length; i++){
for(int j = i+1; j<numbers.length; j++){
if(!queue.contains(numbers[i]+numbers[j])){
queue.add(numbers[i]+numbers[j]);
}
}
}
int[] answer = new int[queue.size()];
int i = 0;
while (!queue.isEmpty()) {
answer[i++] = queue.poll();
}
return answer;
}
}
우선순위 큐를 이용해서 result 값들을 저장하였다.
그리고 반복문의 중복을 통해서 두 가지 숫자를 뽑는 행위를 구현하였고, 큐에 저장된 값인지 여부를 확인하여 없을 경우에만 저장하도록 했다.
🤍 큐에 저장된 값인지 확인 : queue.contains()
여기까진 문제가 없었는데, 처음에 큐에 저장된 값을 배열로 옮길때 문제가 생겼다.
for(int i = 0; i<queue.size(); i++){}
이런 식으로 반복문을 만들어서 옮겼다.
그런데 뒷부분이 0으로 저장되는 이슈가 발생..했다.
알고보니 이런식으로 반복문 조건을 설정하면, queue.poll()을 할 경우 큐의 크기가 줄어들고, 반복문을 한 번 돌때마다 범위가 변하는 것.....
queue를 옮길 땐 다음 두 가지 방법 무조건 쓰기..