
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
Set<Integer> set = new HashSet<>(); // 중복을 제거하는 HashSet 사용
// 두 개의 숫자를 선택해서 더하는 과정
for (int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
set.add(numbers[i] + numbers[j]); // 두 수의 합을 HashSet에 저장
}
}
// HashSet -> 배열 변환 후 정렬
int[] answer = set.stream().mapToInt(Integer::intValue).toArray();
Arrays.sort(answer); // 오름차순 정렬
return answer;
}
}
전에 사용했던 HashSet, Set을 사용하여 중복을 제거하려고 했다. 하지만 배열 변환을 하는 법을 몰라서 구글링의 도움을 받았다. numbers[] 배열에 들어있는 수들의 합의 경우의 수를 전부 구해야하기 때문에 이중 for문을 사용하여 모든 경우의 수를 먼저 구했다. 그 값을 HastSet에 저장을 하고 HashSet -> 배열을 전환한 후 정렬해주었다.
int[] answer = set.stream().mapToInt(Integer::intValue).toArray();
이 부분이 잘 이해가 되지 않아서 chatgpt에게 물어봤다.


그렇다고 한다. 이부분에 대해서는 좀 더 공부가 필요할 것으로 보인다.
'프로그래머스 문제 풀이' 카테고리의 다른 글
| Lv1 - 직사각형 별찍기 (0) | 2025.02.21 |
|---|---|
| Lv1 - 핸드폰 번호 가리기 (0) | 2025.02.21 |
| Lv1 - 음양더하기 (0) | 2025.02.19 |
| Lv1 - 숫자 문자열과 영단어 (0) | 2025.02.19 |
| Lv1 - 로또의 최고 순위와 최저 순위 (0) | 2025.02.19 |