ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: N์ผ๋ก ํํ
dirmathfl 2020. 11. 6. 22:38๋ฌธ์
์ฝ๋ฉํ ์คํธ ์ฐ์ต - N์ผ๋ก ํํ
programmers.co.kr
๋ฌธ์ ํ์ด
ํน์ ํ ์ซ์ 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
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ๋ณด์ ์ผํ (0) | 2020.11.07 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ์ด์ค์ฐ์ ์์ํ (0) | 2020.11.05 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ง๊ฒ๋ค๋ฆฌ (0) | 2020.11.04 |
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (0) | 2020.11.03 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ผ๊ทผ ์ง์ (0) | 2020.11.02 |