프로그래머스 문제 풀이

Lv1 - 두 개 뽑아서 더하기

Dotae1 2025. 2. 19. 20:09

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에게 물어봤다.

 

 

그렇다고 한다. 이부분에 대해서는 좀 더 공부가 필요할 것으로 보인다.