View
📚 문제
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
📝 문제 해결
배열의 모든 수를 더해 중복값을 허용하지 않는 HashSet에 저장해주고 다시 int 배열로 바꿔 정렬한 뒤 리턴하면 된다.
hs.stream().mapToInt(Integer::intValue).sorted().toArray();
스트림을 사용하면 배열이나 컬렉션(List, Set, Map) 등을 사용해 원하는 값을 얻으려는 경우 기존의 for 도배를 줄일 수 있고 원하는 값을 메소드만 사용해서 쉽게 가져올 수 있다. (다만 디버깅이 힘들다는 것이 흠)
[출처 : https://wakestand.tistory.com/419 ]
Collection에 stream()이 정의되어 있어 Collection의 자손(List, Set, Map)을 구현한 컬렉션 클래스들은 모두 stream()으로 스트림을 생성할 수 있다.
💻 코드
import java.util.HashSet;
class Solution {
public int[] solution(int[] numbers) {
HashSet<Integer> hs = new HashSet<>();
for(int i=0; i<numbers.length-1; i++){
for(int j=i+1; j<numbers.length; j++){
hs.add(numbers[i]+numbers[j]);
}
}
return hs.stream().mapToInt(Integer::intValue).sorted().toArray();
}
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 68935번 3진법 뒤집기(Java) (0) | 2023.04.13 |
---|---|
[정렬] 프로그래머스 42746번 가장 큰 수(Java) (0) | 2023.03.19 |
[정렬] 프로그래머스 42748번 K번째수(Java) (0) | 2023.03.19 |
reply