[Java] programmers-"두 개 뽑아서 더하기"

김빛나리·2021년 12월 29일

문제 설명

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



제한사항

  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.


입축력 예

numbersresult
[2,1,3,4,1][2,3,4,5,6,7]
[5,0,2,7][2,5,7,9,12]


알고리즘

  1. for문을 2개 돌려서 그 두개에서 나온 수들을 서로 더한다.
  2. arraylist를 만들어서 .contains() 함수를 통해 더해진 수가 존재하는지 확인하고 존재하면, continue; 존재하지 않으면 arraylist에 추가한다.
  3. answer를 만들어진 arraylist의 길이로 초기화 시켜주고, 값을 넣어준다.
  4. Arrays.sort() 함수를 이용해서 오름차순으로 정렬한다.


내 소스 코드

import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = {};
        ArrayList<Integer> list = new ArrayList<Integer>();
        
        for(int i=0;i<numbers.length;i++) {
            for(int j=i+1;j<numbers.length;j++) {
                int add_result = numbers[i] + numbers[j];
                if(list.contains(add_result)) continue;
                else list.add(add_result);
            }
        }
        
        answer = new int[list.size()];
        for (int i=0;i<list.size();i++) {
            answer[i] = list.get(i);
        }
        Arrays.sort(answer);  
        
        return answer;
    }
}

0개의 댓글