[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 34์ผ์ฐจ TIL (ํ๊ฒ ๋๋ฒ)
ํ๊ทธ: 99ํด๋ฝ, BFS/DFS, PS, TIL, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
๋ฌธ์
์ค๋ช
numbers ๋ฐฐ์ด์ ๊ฐ ํญ๋ชฉ์ ๋ํ๊ฑฐ๋ ๋นผ๋ ๊ณผ์ ์ค target ์ ์ซ์์ ๊ฐ์์ง๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ .
ํ์ด
๋ฌธ์ ์ ๊ทผ ๋ฐฉํฅ
- ๋ํ๊ฑฐ๋ ๋นผ๋ ๋ ๊ฐ์ง ์ ํ์ง๊ฐ ์๋ค.
- ์ฒซ ๋ฒ์งธ ์ซ์๋ถํฐ ์์ํด ๋ํ๊ฑฐ๋ ๋นผ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ซ์์ ์ ๋ฌํ๋ ์์ผ๋ก ์ฌ๊ท์ ์ผ๋ก ์ ๊ทผํ๋ค.
- dfs ํจ์์์ ๋ํ๊ฑฐ๋ ๋นผ๋ ๊ฒฝ์ฐ์ ๋ํด ์ฌ๊ท ํธ์ถํ๋ค.
- ๊ธฐ์ ์กฐ๊ฑด :
- dfs ๋ฅผ numbers ๋ฐฐ์ด ๊ธธ์ด ๋งํผ ํธ์ถํ์ผ๋ฉด ์ข ๋ฃ์ํจ๋ค. (๋ชจ๋ ํญ๋ชฉ์ ํ์ํ๋ค๋ ์๋ฏธ)
- sum ์ด target ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
dfs ๊ณผ์ ์ ๋ช๊ฐ์ง ๊ฒฝ์ฐ๋ง ๋๋ต์ ์ผ๋ก ๊ทธ๋ ค๋ณด๋ฉด ์๋์ ๊ฐ๋ค. dfs ๊ฐ ํ๋ฒ ํธ์ถ๋ ๋๋ง๋ค sum ์ ๋ํด ๋ํ๋ ๊ฒฝ์ฐ์ ๋นผ๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ํ์ํ๋ค. ๊ทธ ๊ณผ์ ์์ sum ๊ณผ target ์ด ๊ฐ์ ๊ฒฝ์ฐ์ answer ์ ๊ฐฏ์๋ฅผ ํ๋์ฉ ์ฆ๊ฐ์์ผ ์ค๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
static int answer = 0;
public int solution(int[] numbers, int target) {
answer = 0; // ํธ์ถ ์ answer ์ด๊ธฐํ
dfs(numbers, target, 0, 0);
return answer;
}
private void dfs(int[] numbers, int target, int index, int sum) {
if (index == numbers.length) { // index ์ฆ๊ฐ ์ ํ ์กฐ๊ฑด
if (sum == target) { // ์นด์ดํธ ์กฐ๊ฑด
answer++;
}
return;
}
dfs(numbers, target, index + 1, sum + numbers[index]);
dfs(numbers, target, index + 1, sum - numbers[index]);
}
}
๋๊ธ๋จ๊ธฐ๊ธฐ