https://school.programmers.co.kr/learn/courses/30/lessons/68644#


import java.util.*;
class Solution {
public List<Integer> solution(int[] numbers) {
int sum;
List<Integer> sumList = new ArrayList<>();
List<Integer> answerList = new ArrayList<>();
for(int i=0; i<numbers.length; i++) {
for(int j=i+1; j <numbers.length; j++) {
sum = numbers[i] + numbers[j];
if (sumList.contains(sum)) {
continue;
} else {
sumList.add(sum);
answerList.add(sum);
}
}
}
Collections.sort(answerList);
return answerList;
}
}
배열의 모든 수들의 합계(중복 허용X)를 구하여 배열에 저장한 후 오름차순 정렬 후 리턴하는 쉬운 문제다.
어찌저찌 통과하기는 했지만 반환형도 리스트로 바꿔서 제출하기도 했고,
코드가 지저분해서 맘에 들지는 않는다.
Set을 활용했으면 더 간단하게 풀 수 있었을 것 같았는데 생각이 나지는 않았다.
import java.util.*;
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]);
}
}
return set.stream().mapToInt(Integer::intValue).sorted().toArray();
}
}
set.stream().mapToInt(Integer::intValue).sorted().toArray();
a) set.stream() -> set을 stream()을 통해 스트림으로 변환
b) .mapToInt(Integer::intValue)
-> 스트림의 각 요소를 Integer 객체에서 기본형 int로 변환한다.
이때 Integer::intValue는 Integer 객체의 intValue 메서드를 참조하는 메서드 참조다.
c) .sorted() -> 정렬한다.
d) .toArray() -> array로 변경한다.