[프로그래머스] [Level1] 두 개 뽑아서 더하기 - Java

2020. 12. 22. 13:30프로그래밍/알고리즘

반응형

💁‍♀️ 링크

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

 

📃 문제 

 

정수 배열 numbers가 주어진다.

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

 

예)

numbers                result

[2,1,3,4,1] [2,3,4,5,6,7]

 

  • 2 = 1 + 1
  • 3 = 2 + 1
  • 4 = 1 + 3
  • 5 = 1 + 4 = 2 + 3
  • 6 = 2 + 4 
  • 7 = 3 + 4 

 

🐾 문제풀이

 

1. numbers 배열에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 구한다.

  • ArrayList 사용

    • List 값이 중복되기 때문에 중복배제하는 코드를 작성해줘야 한다. 

  • HashSet 사용 

    • Set인터페이스를 구현한 것으로 중복허용X, 순서유지X

 

2. 오름차순으로 정렬한다.

  • Collections.sort() 사용

 

💻 코드

//
// ArrayList 사용
//
import java.util.ArrayList;
import java.util.Collections;
class Solution {
    public int[] solution(int[] numbers) {
        int[] answer;
        ArrayList<Integer> arrList = new ArrayList<>();
        
        for(int i=0; i<numbers.length; i++){
            for(int j=i+1; j<numbers.length; j++){
                // 중복제거
                if(!arrList.contains(numbers[i]+numbers[j])){
                    arrList.add(numbers[i]+numbers[j]);
                }
            }
        }
        
        // 정렬
        Collections.sort(arrList);
        
        int cnt = 0;
        answer = new int[arrList.size()];
        for(int arr : arrList){
            answer[cnt++] = arr;
        }
        return answer;
    }
}

 

반응형