정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
numbers | result |
---|---|
[2,1,3,4,1] |
[2,3,4,5,6,7] |
[5,0,2,7] |
[2,5,7,9,12] |
입출력 예 #1
[2,3,4,5,6,7]
을 return 해야 합니다.입출력 예 #2
[2,5,7,9,12]
를 return 해야 합니다.https://programmers.co.kr/learn/courses/30/lessons/68644?language=java
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
HashSet<Integer> hSet = new HashSet<Integer>();
//중복이 없고 오름차순이라 set 사용
for(int i=0; i<numbers.length; i++) {
for(int j=0; j<numbers.length; j++) {
if(i!=j) {
hSet.add(numbers[i]+numbers[j]);
}
}
}
Iterator iterator = hSet.iterator();
answer = new int[hSet.size()];
for(int i=0; i<hSet.size(); i++) {
answer[i] = (int)iterator.next();
}
//정수 배열을 반환해야하므로 해쉬셋을 정수배열로 변환
return answer;
}
}
5678번을 실패했다.
구조는 같은데 해쉬셋 대신에 그냥 리스트를 사용하니 통과했다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
int sum = 0;
ArrayList<Integer> aList = new ArrayList<Integer>();
for(int i=0; i<numbers.length; i++) {
for(int j=i+1; j<numbers.length; j++) {
sum = numbers[i]+numbers[j];
if(aList.indexOf(sum)<0) { //중복이 아니라면
aList.add(sum);
}
}
}
answer = new int[aList.size()];
for(int i=0; i<aList.size(); i++) {
answer[i]+=aList.get(i);
}
Arrays.sort(answer);
return answer;
}
}