문제 출처 - Programmers
문제는 여기
[풀이]
1. 중복처리를 위해 ArrayList를 만들어준다.
2. 2중 for문을 통한 반복으로 두 수의 합을 구해준다.
3. 2. 에서 구해진 합이 contains()를 사용해 1. 에서 만든 ArrayList에 포함이 되어있는지 체크하고 없다면 넣어준다.
4. list에 담겨 있는 값들을 answer 배열에 담아준다.
5. 결과는 오름차순 정렬이 되어야 하므로 Arrays.sort()를 사용해 정렬해준다.
[접근]
1. 반복을 돌리면서 합을 구해서 중복되지 않는 값들만 구해주면 되겠다고 생각했다.
[코드]
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < numbers.length; i++) {
int sum = 0;
// 0부터 돌면 똑같은 값을 계속 중복적으로 구하게 됨
// 따라서 기준숫자 이후로 계산
for (int j = i + 1; j < numbers.length; j++) {
sum = numbers[i] + numbers[j];
// 있는 지 체크
if (!list.contains(sum)) {
list.add(sum);
}
}
}
int[] answer = new int[list.size()];
// 리스트에 있는 값들을 넣어주기
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
// 오름차순 정렬
Arrays.sort(answer);
return answer;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 3진법 뒤집기 (JAVA) (0) | 2022.03.16 |
---|---|
[프로그래머스] 이진 변환 반복하기 (JAVA) (0) | 2022.03.15 |
[프로그래머스] 삼각 달팽이 (JAVA) (0) | 2022.03.13 |
[프로그래머스] 신규 아이디 추천 (JAVA) (0) | 2022.03.11 |
[프로그래머스] 문자열 압축 (JAVA) (0) | 2022.03.10 |