Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[Lv.1_Java] 두 개 뽑아서 더하기 본문

알고리즘테스트/Programmers

[Lv.1_Java] 두 개 뽑아서 더하기

코딩거인 2023. 8. 17. 20:10
728x90
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;
    }
}

list를 생성하여 이중for 문을 통해 담아 list 에 담아주었는데 배열로 바꿔서 나타낸결과 중복된 값이 들어갔다.
따라서 중복된 값을 없애 주어야 하는데 첫번째 방법은 list를 set 으로 변환시켜 중복된 값을지우고 다시 그 set 을 list 로 만들어 주는 것이다.
두번째는 Stream 을 사용하는 것인데 Java 8 이상에서는 Stream의 distinct() 를 이용해서 List의 중복을 제거할 수 있다.
두가지 다 실행해본결과 set으로 바꿔서 중복된 값을 없애주는 것이 조금 더 빨랐다!

728x90