공부하자/알고리즘

[프로그래머스] Lv.1 두 개 뽑아서 더하기 java

snbrin 2022. 4. 22. 14:46

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

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

 

문제

정수 배열 numbers. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return하는 함수를 완성하시오.

제한조건

numbers의 길이는 2이상 100이하

numbers의 모든 수는 0이상 100이하

 

.java

import java.util.*;
class Solution {
    public int[] solution(int[] numbers) {
        //TreeSet생성(오름차순 정렬)
        //이진탐색트리로 중복을 허용하지 않음
        //오름차순, 중복제거 동시 처리
        Set<Integer> ts = new TreeSet<>();
        
        //1.인수 길이만큼 반복
        for(int i=0; i<numbers.length; i++){
        	//1-1.모든 배열값 더하기
            for(int j=i+1; j<numbers.length;j++){
                ts.add(numbers[i]+numbers[j]);
            }
        }
        //2.array로 변환하여 answer에 저장
        int[] answer = ts.stream().mapToInt(Number::intValue).toArray();
        
        return answer;
    }
}

 

실행 결과