https://programmers.co.kr/learn/courses/30/lessons/68644
풀이
중첩 for문으로 두 개의 수를 더한 수를 list에 add하고 list를 정렬한다.
list에 add할 때 이미 같은 값이 있다면 넣지 않는다. 이미 같은 값이 있는지 확인하기 위해 contains() 함수를 사용한다.
contains() 함수는 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수이다.
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] numbers) {
ArrayList<Integer> list = new ArrayList<>();
int num;
for(int i=0;i<numbers.length-1;i++){
for(int j=i+1;j<numbers.length;j++){
num = numbers[i]+numbers[j];
if (!list.contains(num))
list.add(num);
}
}
Collections.sort(list); // 정렬
int[] answer = new int[list.size()];
for(int i=0;i<list.size();i++){
answer[i]=list.get(i);
}
return answer;
}
}
TreeSet을 이용한 풀이
중복제거를 위해 Set을 사용한다. 처음에는 HashSet을 사용하려고했는데, TreeSet을 이용하면 add할때 자동으로 정렬되어 들어가기 때문에 정렬을 따로 해줄 필요가 없다.
주의할 점은 TreeSet을 Array로 바꿔줄 때인데, toArray()를 이용해서 변환하게되면 Object 타입이 되기 때문에 Int 타입으로 한번 더 변환을 거쳐줘야한다. 강제 형변환을 해줬다.
import java.util.Set;
import java.util.TreeSet;
class Solution {
public int[] solution(int[] numbers) {
// 중복제거 및 정렬을 위해 TreeSet 사용
Set<Integer> set = new TreeSet<Integer>();
for(int i = 0; i < numbers.length-1; i++) {
for(int j = i+1; j < numbers.length; j++) {
set.add(numbers[i] + numbers[j]);
}
}
// TreeSet to array
Object[] object = set.toArray();
int[] answer = new int[object.length];
for(int i=0;i<object.length;i++){
answer[i] = (int)object[i];
}
return answer;
}
}
'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 : 가운데 글자 가져오기 (0) | 2022.01.31 |
---|---|
[Java] 프로그래머스 : 문자열 다루기 기본 (0) | 2022.01.31 |
[Java] 프로그래머스 : 자연수 뒤집어 배열로 만들기 (0) | 2022.01.31 |
[Java] 프로그래머스 : 제일 작은 수 제거하기 (0) | 2022.01.31 |
[Java] 프로그래머스 : 같은 숫자는 싫어 (0) | 2022.01.31 |