๋ฌธ์ ๐ต๐ซ
https://school.programmers.co.kr/learn/courses/30/lessons/43165
๋ด ํ๐ฆท
class Solution {
public int solution(int[] numbers, int target) {
return dfs(numbers, target, 0, 0);
}
private int dfs(int[] numbers, int target, int index, int sum) {
// ๋ชจ๋ ์ซ์๋ฅผ ๋ค ์ฌ์ฉํ์ ๋
if(index == numbers.length) {
// ๋ชฉํ ์ซ์์ ํฉ์ด ๊ฐ์ผ๋ฉด ๊ฒฝ์ฐ์ ์ 1 ์ฆ๊ฐ
return sum == target ? 1 : 0;
}
// ํ์ฌ ์ซ์๋ฅผ ๋ํ๋ ๊ฒฝ์ฐ์ ๋นผ๋ ๊ฒฝ์ฐ๋ก ์ฌ๊ท ํธ์ถฉ..
return dfs(numbers, target, index + 1, sum + numbers[index]) + dfs(numbers, target, index + 1, sum - numbers[index]);
}
}
์ด๋ฏธ ํ๋ฒ ํ์๋ dfs ๋ฌธ์ !!
๋ชจ๋ ๊ฐ๋ฅํ ๊ฒฝ๋ก๋ฅผ ๋ค ํ์ํ์ฌ ํน์ ์กฐ๊ฑด์ ์ฐพ์์ผํ๋ ๋ฌธ์ ์ด๋ฏ๋ก dfs๋ฅผ ์ฌ์ฉํ์๋ค
if๋ฌธ์ ์ฐ๋๊ฒ๊น์ง๋ ์ฌ์ด๋ฐ ๋ง์ง๋ง์ ์ฌ๊ท๋ฅผ ์ด๋ป๊ฒ ์์ผ์ผํ๋์ง๋ ํญ์ ๊ณ ๋ฏผ๋๋ ๋ถ๋ถ์ธ๊ฑฐ ๊ฐ๋ค..
ํ์ง๋ง ์ด๋ฒ๋ฌธ์ ๋ ์์ํ๊ฒ ํต๊ณผ~~
์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฐ๋ ๋ค โ๏ธ
DFS๋ฅผ ์ฌ์ฉํ์ ๋ ํจ๊ณผ์ ์ธ ๋ฌธ์ ์ ํ
- ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ์ํ์ฌ ํน์ ์กฐ๊ฑด์ ์ฐพ๋ ๊ฒฝ์ฐ : ์ฃผ์ด์ง ์ซ์ ๋ฐฐ์ด์ ๋ํ๊ณ ๋นผ์ ํน์ ๊ฐ์ ๋ง๋๋ ๋ฌธ์
- ํด๋ค ์กด์ฌํ๋์ง ํ์ธํ๋ ๊ฒฝ์ฐ : ๋ฏธ๋ก์์ ์ถ๊ตฌ๊น์ง ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ํ์ธํ ๋
- ์กฐํฉ๊ณผ ์์ด์ ์์ฑํ๋ ๋ฌธ์ : ํน์ ๊ธธ์ด์ ์กฐํฉ์ ์์ฑํ๊ฑฐ๋, ์์ด์ ๋ง๋๋ ๋ฌธ์
- ๋ฐฑํธ๋ํน๊ณผ ํจ๊ป ์ฌ์ฉํ ๋ : N-Queens ๋ฌธ์ ์ฒ๋ผ ์ ํ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ ๋
DFS ์ฌ์ฉ ์ ์ฃผ์์ฌํญ
- ๋ฌดํ ๋ฃจํ ์ฃผ์ : ์ฌ๊ท ํธ์ถ์์ ์ข ๋ฃ ์กฐ๊ฑด์ ๋ช ํํ ์ค์ ํด์ผ ํฉ๋๋ค
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ : ๊น์ด๊ฐ ๊น์ด์ง ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ปค์ง ์ ์์ผ๋ฏ๋ก, ๋๋ฌด ๊น์ ์ฌ๊ท ํธ์ถ์ด ํ์ํ ๋ฌธ์ ์์๋ ์คํ ์ค๋ฒํ๋ก์ฐ์ ์ฃผ์ํด์ผ ํฉ๋๋ค
- ํ์ ์ต์ ํ : ๋ฐฑํธ๋ํน์ ์ฌ์ฉํ์ฌ ๋ถํ์ํ ๊ฒฝ๋ก๋ ์กฐ๊ธฐ์ ์ค๋จํ์ฌ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค
'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌ๋ฐ๋ฅธ ๊ดํธ (java) (0) | 2024.12.05 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ๋ชจ์๊ณ ์ฌ (java) (1) | 2024.11.24 |
ํ๋ก๊ทธ๋๋จธ์ค - k๋ฒ์งธ ์ (java) (1) | 2024.11.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] 3์ง๋ฒ ๋ค์ง๊ธฐ(JAVA) (1) | 2024.05.01 |
๋ฐฑ์ค 1446. ์ง๋ฆ๊ธธ(๋ค์ต์คํธ๋ผ) (0) | 2023.10.27 |