두 개 뽑아서 더하기

김나영·2023년 6월 21일
0

프로그래머스

목록 보기
37/39

문제 : 두 개 뽑아서 더하기

풀이

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]);
   }
}
  • 두 개의 수를 뽑아야하므로 이중 for문 사용

  • 두 수를 더한 값을 set에 추가

Integer[] re = set.toArray(new Integer[0]);
  • set 객체의 toArray()를 사용하여 set 객체를 배열로 변환

  • 파라미터로는 변환될 배열 객체를 넘겨줌

  • 배열 크기를 0으로 지정하면 자동으로 배열의 크기가 지정됨

int [] answer = Arrays.stream(re).sorted().mapToInt(i->i).toArray(); 
return answer;
  • stream api를 이용하여 Set의 데이터를 정렬하고 int형 배열로 return

    • set에 담긴 데이터를 sorted()로 정렬 후 mapToInt()로 int 배열로 변환시킴

전체 코드

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
class Solution {
    public int[] solution(int[] numbers) {
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < numbers.length; i++){
            for (int j = i+1; j < numbers.length; j++) {
                set.add(numbers[i] + numbers[j]);
            }
        }
        Integer[] re = set.toArray(new Integer[0]);
        int [] answer = Arrays.stream(re).sorted().mapToInt(i->i).toArray(); //i -> i => Integer -> intValue
        return answer;
    }
}

0개의 댓글