smooth waters run deep

1d-1c/Programmers

Level1_두 개 뽑아서 더하기 (JAVA)

yeon_11 2020. 10. 31. 21:12
 

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

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

programmers.co.kr

import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
        Set<Integer> temp = new HashSet<>();
        
        for(int i=0; i<numbers.length; i++){
            for(int j=i+1; j<numbers.length; j++){
                temp.add(numbers[i]+numbers[j]);
            }
        }
        
        List temp2 = new ArrayList(temp); //HashSet->List
        Collections.sort(temp2);
        
        int[] answer = new int[temp2.size()];
        for(int i=0; i<temp2.size(); i++){
            answer[i] = (int)temp2.get(i);
        }
        
        return answer;
    }
}

 

numbers의 길이 최대가 100이므로, 완전탐색으로 해도 시간초과가 나지 않는다.

 

 

1. 완전탐색을 통해 두 개의 수의 합이 될 수 있는 모든 경우를 구한다.

2. 이때 중복은 제외해야 하므로, HashSet으로 저장한다.

3. 오름차순 정렬을 하기위해서, HashSet -> List 로 바꾸어준다.

4. Collections.sort()로 오름차순 정렬한다.

5. answer에 값을 넣어준다.

 

 

 

 

'1d-1c > Programmers' 카테고리의 다른 글

Level1_모의고사 (JAVA)  (0) 2020.11.02
Level1_예산 (JAVA)  (0) 2020.11.02
Level1_크레인 인형뽑기 게임 (JAVA)  (0) 2020.10.31
Level1_완주하지 못한 선수 (C++) (JAVA)  (0) 2020.10.31
Level1_K번째 수 (JAVA)  (0) 2020.10.31