정수 배열 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] |
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] numbers) {
ArrayList<Integer> list = new ArrayList<Integer>();
int sum;
for(int i = 0; i < numbers.length - 1 ; i++){
for(int j = i + 1; j < numbers.length ; j++){
sum = numbers[i] + numbers[j];
if(list.contains(sum) == false){
list.add(sum);
}
}
}
Collections.sort(list);
int answer[] = new int[list.size()];
for(int i = 0; i < list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
배열 numbers에 들어 있는 첫번째 정수와 그 정수 다음수를 더한다.
더한 값이 결과값을 담는 answer 배열에 있는지 확인한다.
없으면 answer 배열에 추가한다.
••• 아래 그림과 같이 반복 •••
answer 배열 오름차순으로 정렬
헤맸던 점은
1. 결과값이 들어가는 배열인 answer의 크기 설정
2. 두 수를 더한 값이 배열안에 들어있는지 체크
두가지 였다.
위 2가지 문제점을 다음과 같이 해결했다 !
1번 : java의 동적 배열인 ArrayList를 사용하였다.
2번 : ArrayList의 특정값이 존재하는지 검사하는 contains를 사용하였다. (특정값의 인덱스를 반환하는 메소드는 indexOf가 있다.)
자바의 문법들이 기억나지 않아 구글링을 해서 해결을 했다. 자바도 다시 공부하고 꾸준히 복습해야겠다.