ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/ํ๋ก๊ทธ๋๋จธ์ค
ํ๋ก๊ทธ๋๋จธ์ค: N์ผ๋ก ํํ
dirmathfl 2020. 11. 6. 22:38728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
ํน์ ํ ์ซ์ `N`์ผ๋ก ์ฌ์น์ฐ์ฐ์ ์ฌ์ฉํ์ฌ `number`๋ฅผ ํํํ ์ ์๋์ง ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ด๋ `N`์ ์ฌ์ฉํ ํ์๊ฐ ๊ฐ์ฅ ์์ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ผ ํ๋ค. ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ `DP`๋ฅผ ํตํด์๋ ํ ์ ์์ง๋ง, `DFS`๋ฅผ ํตํด ํ๋๋ผ๋ ๊ฐ์ ํ ํต๊ณผํ ์ ์๋ค.
`DFS`๋ฅผ ํตํด ์ฌ์ฉํ `N`์ ์๋ฅผ ์นด์ดํธํ๊ณ , ์นด์ดํธ๋ ์๊ฐ 8๋ณด๋ค ํฌ๋ค๋ฉด ๋ ์ด์ ๊ฐ์ง๋ฅผ ๋ป์ ํ์ ์์ด ์ข ๋ฃํ๋ฉด ๋๋ค. ๋ํ ๋ง์กฑํ๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ, ํ์ฌ ์ฐพ์ ์นด์ดํธ๋ณด๋ค `N`์ ๋ ๋ง์ด ์ฌ์ฉํ๋ค๋ฉด ๊ฐ์ง๋ฅผ ๋ป์ง ์์ผ๋ฉด ๋ณด๋ค ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์๋ค.
์ฝ๋
from math import inf
answer = inf
def dfs(n, cnt, num, number):
global answer
if answer < inf and cnt > answer:
return
if cnt > 8:
return
if num == number:
answer = min(answer, cnt)
return
next_num = 0
for i in range(8):
next_num = next_num * 10 + n
dfs(n, cnt + 1 + i, num + next_num, number)
dfs(n, cnt + 1 + i, num - next_num, number)
dfs(n, cnt + 1 + i, num * next_num, number)
dfs(n, cnt + 1 + i, num / next_num, number)
def solution(N, number):
dfs(N, 0, 0, number)
return -1 if answer == inf else answer
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ๋ณด์ ์ผํ (0) | 2020.11.07 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ์ด์ค์ฐ์ ์์ํ (0) | 2020.11.05 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ง๊ฒ๋ค๋ฆฌ (0) | 2020.11.04 |
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (0) | 2020.11.03 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ผ๊ทผ ์ง์ (0) | 2020.11.02 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ