정수 배열
numbers
가 주어집니다.numbers
에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해 주세요.
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
numbers | result |
---|---|
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int []answer;
int index = -1;
HashSet<Integer> hashSet = new HashSet<>();
for(int i = 0; i < numbers.length; i++){
for(int j = 0; j <numbers.length; j++){
if(i == j)
continue;
else
hashSet.add(numbers[i] + numbers[j]);
}
}
answer = new int[hashSet.size()];
Iterator it = hashSet.iterator();
while(it.hasNext()){
answer[++index] = (int) it.next();
}
Arrays.sort(answer);
return answer;
}
}
💡 서로 다른 두 인덱스를 골라야 하므로
i
와j
가 같다는 것은 인덱스가 같다는 것이므로 이때는 continue를 통해 해당 반복을 그냥 넘겨 버리고, 인덱스가 다를 시에는 HashSet을 이용해 값을 저장해 준다 (HashSet은 중복된 값을 허용하지 않기 때문에 똑같은 값이 저장될 수 없기에 사용하게 되었다)
💡 리턴 해야 할
answer
배열의 크기를 HashSet에 저장된 사이즈로 지정해 주고, HashSet은 각각의 값을 불러오는 것은 안 되기 때문에 iterator를 통해 값을 불러와answer
배열에 넣고 오름차순으로 정렬해야 하기 때문에 sort()를 사용해 주었다
❕ 이 문제 풀면서 HashSet을 처음 사용해 보았다 각각의 값을 불러오는 게 조금 불편했지만 중복된 값을 저장하지 않는다는 점에서 문제 풀 때 유용하게 쓰일 수 있을 것 같다 새로운 걸 알아 가는 기분이라 뿌듯하다 🤩