반응형
- 첫 풀이 및 정답풀이
이 문제는 하나의 배열에 주어지는 데이터들 중 서로 다른 인덱스를 가지는 원소의 합을 오름차순으로 정렬하여 반환하면 되는 문제이다. 여기서 주의해야 할 점은 numbers[i] + numbers [j] == numbers [j] + numbers [i]라는 점과 중복은 허용하지 않는다는 것이다.
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public ArrayList<Integer> solution(int[] numbers) {
// 1. 정답 ArrayList 객체
ArrayList<Integer> answer = new ArrayList<>();
// 2. 더한 결과의 중복을 확인하기 위한 배열, 데이터 최댓값인 100이 두 번 더해지는 200이 최대로 나올 수 있는 수.
boolean[] check = new boolean[201];
// 3. numbers탐색, 자신과 자신 앞의 데이터를 더하게 되므로 마지막 인덱스는 고려하지 않는다.
for(int i =0;i<numbers.length-1;i++){
int sum;
// 3-1. 인덱스 1,2의 결과와 2,1의 결과는 같으므로, i+1부터 시작.
for(int j = i+1;j<numbers.length;j++){
sum = numbers[i]+numbers[j];
// 3-2. 더한 값이 나오지 않았던 수라면, ArrayList에 삽입 후 방문처리.
if(!check[sum]){
answer.add(sum);
check[sum] = true;
}
}
}
// 4. 구한 결과를 저장한 ArrayList를 정렬.
Collections.sort(answer);
return answer;
}
}
반응형