๋ฐ์ํ
๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=java
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์์ฝ
์ ์ ๋ฐฐ์ด numbers์ ๋ํด ๋ ๊ฐ์ ์๋ฅผ ๋ฝ์ ๋ํด์ ๋ง๋ค ์ ์๋ ๋ชจ๋ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
์ด๋, ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค.
์ ํ
- numbers์ ๊ธธ์ด๋ 2 ์ด์ 100 ์ดํ์
๋๋ค.
- numbers์ ๋ชจ๋ ์๋ 0 ์ด์ 100 ์ดํ์ ๋๋ค.
ํ์ด
numbers์ ๊ธธ์ด๊ฐ 100 ์ดํ๋ก, ์์ ๊ฐ์ด๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๊ฐ ์ปค๋ ์๊ด์์ต๋๋ค.
- numbers์์ ๋ง๋ค ์ ์๋ ๋ ๊ฐ์ ์ ํฉ์ ๋ชจ๋ ์ฐพ๋๋ค.
- ์ด๋ฅผ ์ค๋ณต ์ ๊ฑฐํ๋ค.
- ๋ง์ง๋ง์ผ๋ก ์ ๋ ฌํ๋ค.
์ฝ๋
1. HashSet ์ฌ์ฉํ๊ธฐ
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
HashSet<Integer> set = new HashSet<>();
for(int i=0; i<numbers.length-1; i++){
for(int j=i+1; j<numbers.length; j++){
set.add(numbers[i]+numbers[j]);
}
}
int[] answer = set.stream().sorted().mapToInt(Integer::intValue).toArray();
return answer;
}
}
[์๊ฐ ๋ณต์ก๋]
- N: numbers ๋ฐฐ์ด์ ๊ธธ์ด
- ์ด์ค for๋ฌธ → O(N^2)
- set.add() → O(1)
- set์ ์ต๋ ๊ธธ์ด: N^2
- sorted() → O((N^2) log(N^2))
- ์ต์ข ์๊ฐ ๋ณต์ก๋ = O(N^2)+O((N^2) log(N^2)) = O((N^2) log(N^2))
2. distinct() ์ฌ์ฉํ๊ธฐ
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
List<Integer> list = new ArrayList<>();
for(int i=0; i<numbers.length-1; i++){
for(int j=i+1; j<numbers.length; j++){
list.add(numbers[i]+numbers[j]);
}
}
int[] answer = list.stream().distinct().sorted().mapToInt(Integer::intValue).toArray();
return answer;
}
}
hashSet ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ฌ๋ผ์ง ์ ์ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํด ์คํธ๋ฆผํํ ํ, distinc() ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ์ํ
'๐ช Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA) (2) | 2025.02.03 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (JAVA) (1) | 2025.02.02 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ฌ์ ๊ณฑ์ (JAVA) (1) | 2025.02.01 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ชจ์๊ณ ์ฌ (JAVA) (1) | 2025.01.30 |