https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=java
문제설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
문제 해결 방법
주어진 배열에서 각각 다른인덱스의 요소를 뽑아서 합을 구한후 해쉬셋에 추가
해쉬셋을 사용하여 중복제거함
코드 구현
import java.util.HashSet;
class Solution {
public static HashSet<Integer> set1 = new HashSet<Integer>();
public int[] solution(int[] numbers) {
int[] answer = {};
for(int i = 0; i < numbers.length; i++){
for(int j = 0; j< numbers.length; j++){
if(i == j){
continue;
}
int sum = numbers[i] + numbers[j];
set1.add(sum);
}
}
return set1.stream().sorted().mapToInt(Integer::intValue).toArray();
//해쉬셋을 stream으로 변환후, 오름차순으로 정렬한다.
// 그 후 set1의 Integer객체들을 int형으로 변환해주고, 배열로 변환한다.
}
}
시간/공간 복잡도
O(N^2)
최적화 및 개선
따로 하지않음
어려웠던 점
문법에 익숙하지 않은점
'코딩테스트 > 문제 풀이 - Java' 카테고리의 다른 글
[백준2667] 단지번호붙이기 (0) | 2024.03.06 |
---|---|
[백준2606] 바이러스 (0) | 2024.03.05 |
[백준2178] 미로 탐색 (0) | 2024.03.05 |
[백준1260] DFS와 BFS (0) | 2024.03.04 |