코드카타
49) 두 개 뽑아서 더하기
나의 풀이
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
Set<Integer> set = new HashSet<>();
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers.length; j++) {
if (i != j){
set.add(numbers[i]+numbers[j]);
}
}
}
List<Integer> setList = new ArrayList<>(set);
Collections.sort(setList);
answer = setList.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
Set이 중복 없다는 걸 깨닫고
Set을 선택했고, 정렬을 위해 List로 다시 바꾸었다.
다른 분들의 풀이
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] solution(int[] numbers) {
Set<Integer> set = new HashSet<>();
for(int i=0; i<numbers.length; i++) {
for(int j=i+1; j<numbers.length; j++) {
set.add(numbers[i] + numbers[j]);
}
}
return set.stream().sorted().mapToInt(Integer::intValue).toArray();
}
}
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/68644/solution_groups?language=java
스트림을 사용하셔서 sort하셨다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
Set<Integer> set = new TreeSet<>();
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers.length; j++) {
if (i != j){
set.add(numbers[i]+numbers[j]);
}
}
}
answer = set.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
TreeSet을 사용하면 add하면서 정렬도 같이 된다고 하셔서 위처럼 수정해보았다.
그러나 HashSet과 TreeSet의 데이터 삽입 시 시간복잡도 차이 때문에 HashSet가 조금 더 빠르다고 한다.
그래도 내가 배열 -> 컬렌션으로 넘어가는 것 같아서
그동안의 나의 노력이 헛되지는 않았다는 생각이 들었다.
'CODING > 스파르타 내일배움캠프 TIL' 카테고리의 다른 글
53_푸드 파이트 대회_Spring 플러스 주차 개인 과제 트러블슈팅_25.3.11(화) (0) | 2025.03.11 |
---|---|
52_가장 가까운 같은 글자_25.3.10(월) (0) | 2025.03.10 |
50_Spring 심화 주차 개인 과제 해설_25.2.27(목) (0) | 2025.02.27 |
49_K번째수 정렬_25.2.26(수) (0) | 2025.02.26 |
Spring 심화 주차 개인 과제 트러블슈팅 TIL 모음 (0) | 2025.02.25 |