두 개 뽑아서 더하기(java)

최준근·2021년 12월 29일
0

java알고리즘

목록 보기
37/63

문제설명

생각하기

  1. numbers인덱스 배열에서 이중 포문을 돌리며 0, 1~N -> 1, 2~N 이런식으로 끝까지 반복하며 수를더한다.
  2. ArrayList를 사용하여 list에 중복이 아닌 수를 추가해준다.
  3. 정렬
  4. ArrayList를 int[]로 변환

내 풀이

import java.util.*;
class Solution {
    public int[] solution(int[] numbers) {
        ArrayList<Integer> list = new ArrayList<>(); 
        
        for(int i=0; i<numbers.length; i++){
            for(int j=i+1; j<numbers.length; j++){
                if(!(list.contains(numbers[i]+numbers[j]))) list.add(numbers[i]+numbers[j]);
            }
        }
        Collections.sort(list);
        int[] ans = new int[list.size()];
        
        for(int i =0; i<ans.length; i++){
            ans[i] = list.get(i);
        }
        return ans;
    }
}

먼저 ArrayList인 list를 만들고 이중포문으로 numbers의 0번째를 기준으로 1~numbers.length까지 더해준다. 이때 조건으로
!(list.contains(numbers[i]+numbers[j]))로 리스트에 값이 없다면 add로 추가해준다.
Collectons.sort(list) 오름차순 정렬
ans[]의 크기를 할당해주고

ArrayList를 int[]로 변환 후 리턴해준다.

profile
느려도 좋으니 꾸준하게

0개의 댓글