거인의 코딩일지
[Lv.1_Java] 두 개 뽑아서 더하기 본문
728x90
![](https://blog.kakaocdn.net/dn/cazI4O/btsrkP5XWvE/oo5c36LMncu77ELHImFL4k/img.png)
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
List<Integer> list = new ArrayList<>();
for(int i =0; i < numbers.length; i++){
for(int j = i+1; j < numbers.length; j++){
list.add(numbers[i] + numbers[j]);
}
}
// 중복을 없애는 두가지 방법!
Set<Integer> set = new HashSet<Integer>(list);
List<Integer> newList = new ArrayList<Integer>(set);
int [] answer = newList.stream().distinct().mapToInt(i->i).toArray();
// int [] answer = list.stream().distinct().mapToInt(i->i).toArray();
Arrays.sort(answer);
return answer;
}
}
![](https://blog.kakaocdn.net/dn/YATlb/btsrdkzpSEn/6qYl2LRrxgEWfubxo66AR0/img.png)
list를 생성하여 이중for 문을 통해 담아 list 에 담아주었는데 배열로 바꿔서 나타낸결과 중복된 값이 들어갔다.
따라서 중복된 값을 없애 주어야 하는데 첫번째 방법은 list를 set 으로 변환시켜 중복된 값을지우고 다시 그 set 을 list 로 만들어 주는 것이다.
두번째는 Stream 을 사용하는 것인데 Java 8 이상에서는 Stream의 distinct() 를 이용해서 List의 중복을 제거할 수 있다.
두가지 다 실행해본결과 set으로 바꿔서 중복된 값을 없애주는 것이 조금 더 빨랐다!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/016.gif)
728x90
'알고리즘테스트 > Programmers' 카테고리의 다른 글
[Lv.2_Java] 예상 대진표 (0) | 2023.08.18 |
---|---|
[Lv.2_Java] 최댓값과 최솟값 (0) | 2023.08.17 |
[Lv.1_Java] 같은 숫자는 싫어 (0) | 2023.08.17 |
[Lv.0_Java] 정사각형으로 만들기 (0) | 2023.08.17 |
[Lv.0_Java] 커피심부름 (0) | 2023.08.17 |