-
[Algo Rhythm๐บ๐] ํ๋ก๊ทธ๋๋จธ์ค ๊ณ ๋์ kit ํ๊ฒ๋๋ฒAlgo Rhythm๐บ๐/Programmers 2020. 7. 8. 22:47
๋ฌธ์ ์ค๋ช
n๊ฐ์ ์์ด ์๋ ์ ์๊ฐ ์์ต๋๋ค. ์ด ์๋ฅผ ์ ์ ํ ๋ํ๊ฑฐ๋ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [1, 1, 1, 1, 1]๋ก ์ซ์ 3์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ค์ฏ ๋ฐฉ๋ฒ์ ์ธ ์ ์์ต๋๋ค.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3์ฌ์ฉํ ์ ์๋ ์ซ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers, ํ๊ฒ ๋๋ฒ target์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์ซ์๋ฅผ ์ ์ ํ ๋ํ๊ณ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
-
์ฃผ์ด์ง๋ ์ซ์์ ๊ฐ์๋ 2๊ฐ ์ด์ 20๊ฐ ์ดํ์ ๋๋ค.
-
๊ฐ ์ซ์๋ 1 ์ด์ 50 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
-
ํ๊ฒ ๋๋ฒ๋ 1 ์ด์ 1000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ด๋ป๊ฒ ํ์๋
class Solution { public int solution(int[] numbers, int target) { int end = numbers.length; int initNum = numbers[0]; int answer = dfs(numbers, target, 1, end, initNum); return (target == 0) ? (2 * answer) : answer; } public int dfs(int[] numbers, int target, int level, int end, int result) { if(level == end) { return (target == result || target == (result * -1)) ? 1 : 0; } return dfs(numbers, target, level + 1, end, result + numbers[level]) + dfs(numbers, target, level + 1, end, result - numbers[level]); } }
์ ์ ๋ ๊ฒ ํ์๋
๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋ numbers๋ผ๋ ๋ฐฐ์ด์ n๊ฐ์ ์์ด ์๋ ์ ์๋ฅผ ํฌํจํ๊ณ ์๋ค.
์ด๋ n๊ฐ์ ์์ด ์๋ ์ ์๋ค์ ๋ํ๊ฑฐ๋ ๋นผ์ ๋ง๋ค ์ ์๋ ์๋ ์ด 2^n๊ฐ์ด๋ค.
๋ ์ด๊ฒ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค. ์๋ํ๋ฉด ์ ํ์ฌํญ์ ๋ณด๋ฉด n์ ์ต๋๊ฐ์ 20์ธ๋ฐ ์ด๋ด ๊ฒฝ์ฐ ์ฝ 1,00,000๊ฐ์ ์๋ฅผ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์ด๋ค ์จ๊ฒจ์ง ๊ท์น์ ์์์ง ๊ณ ๋ฏผํ๋ค.
์ด๊ฒ์ ๊ฒ ๊ณ ๋ฏผํ๋ค๊ฐ ์์ ๊ฐ์ ๊ท์น์ ๋ฐ๊ฒฌํ๋ค.
์ด ๊ท์น์ ๋ฐ๋ฅด๋ฉด 2^n๊ฐ์ ์๋ค์ด 2๊ฐ์ฉ ์๋ก ๋ถํธ๋ง ๋ค๋ฅด๋ค. ๊ทธ๋์ 2^n๊ฐ๊ฐ ์๋๋ผ 2^(n - 1)๊ฐ๋ง ๊ตฌํด๋ ๋๋ค๋ ๊ฒ์ ์ ์ ์์๋ค.
๊ทธ๋์ ์์ ๊ฐ์ด ํ๋์ ๋ฐ์ค ์์ ์๋ ์ซ์๋ค๋ง ๊ตฌํ๊ณ ์ ์๋ค ํน์ ์ ์๋ค์ ๋ถํธ๋ง ๋ฐ๊พผ ์๊ฐ target๊ณผ ๊ฐ์ผ๋ฉด answer์ 1 ์ฆ๊ฐํ๋๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ด๋ ์์ธ๊ฐ ํ๋ ์๋๋ฐ ๊ทธ๊ฒ์ ๋ฐ๋ก target์ด 0์ผ ๊ฒฝ์ฐ์ด๋ค. target์ด 0์ธ ๊ฒฝ์ฐ๋ ๋ถํธ๋ฅผ ๋ฐ๊ฟ๋ 0์ด๊ธฐ ๋๋ฌธ์ answer์ 2๋ฅผ ๊ณฑํด์ returnํ๋ค.
๋ฌด์์ ๋ฐฐ์ ๋
์ด๋ฒ ๋ฌธ์ ๋ ๊ทธ๋ฅ ํ ์๋ ์์์ง๋ง ํ ๋ฒ ๋ ๊ณ ๋ฏผํ๊ณ ๊ฐ์ ํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
๋จ๊ต์๋๊ป์ ๊ฐ๋ฅด์ณ ์ฃผ์ จ๋ฏ์ด ๋ง์กฑํ์ง ์์ ๋ฟ๋ง ์๋๋ผ ๊ฐ์ ํ๋ ๊ทธ๋ฐ ์์ธ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ํฐ ๋์์ด ๋์๋ค. ๋จ๊ต์๋๊ป ์ ๋ง ๊ฐ์ฌํ๋ค.
'Algo Rhythm๐บ๐ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-