๋ฌธ์ ๋งํฌ: programmers.co.kr/learn/courses/30/lessons/42895
๋ฌธ์ ์ค๋ช
์ฒ์์ number์ ๋ํ dp ํ ์ด๋ธ์ ์์ฑํด์ ๋ฌธ์ ๋ฅผ ํ๋ คํ๋๋ฐ, ๊ทธ๊ฒ ์๋๋ผ N์ ์ฌ์ฉ ํ์์ ๋ํ dp ํ ์ด๋ธ์ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค. ๋ฌธ์ ์์ ์ต์๊ฐ์ด 8๋ณด๋ค ํด ๊ฒฝ์ฐ -1์ ๋ฐํํ๋ค๊ณ ๋์์์ผ๋ฏ๋ก N์ 8๋ฒ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊น์ง๋ง ๊ณ์ฐํ๋ฉด ๋๋ค.
N์ i๋ฒ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ง๋ค ์ ์๋ ์:
- NNN...N (N์ด i๋ฒ ๋ฐ๋ณต๋๋ ๊ฒฝ์ฐ)
- (N์ 1๋ฒ ์ฌ์ฉํ ์) ์ฌ์น์ฐ์ฐ (N์ i - 1๋ฒ ์ฌ์ฉํ ์)
- (N์ 2๋ฒ ์ฌ์ฉํ ์) ์ฌ์น์ฐ์ฐ (N์ i - 2๋ฒ ์ฌ์ฉํ ์)
...
- (N์ i - 1๋ฒ ์ฌ์ฉํ ์) ์ฌ์น์ฐ์ฐ (N์ 1๋ฒ ์ฌ์ฉํ ์)
์ด์ฒ๋ผ N์ 1๋ฒ ์ฌ์ฉํ๋ ๊ฒ๋ถํฐ 8๋ฒ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊น์ง๋ฅผ ๊ฐ ์งํฉ์ ๋ฃ๊ณ , ๋ง์ฝ number๊ฐ ํด๋น ์งํฉ์ ์์๋ผ๋ฉด i๋ฅผ ๋ฐํํ๋ฉด ๋๋ค.
์์ค์ฝ๋
from collections import defaultdict
def solution(N, number):
# dp[i]: N์ i๋ฒ ์ฌ์ฉํด์ ๋ง๋ค ์ ์๋ ์๋ค์ ์งํฉ
dp = defaultdict(set)
for i in range(1, 9):
dp[i].add(int(str(N) * i)) # NNN...N
for j in range(1, i):
for n1 in dp[j]:
for n2 in dp[i - j]:
dp[i].add(n1 + n2)
dp[i].add(n1 - n2)
dp[i].add(n1 * n2)
if n2 != 0: dp[i].add(n1 // n2) # 0์ผ๋ก ๋๋ ์ ์์
if number in dp[i]: return i # N์ i๋ฒ ์ฌ์ฉํด์ number๋ฅผ ๋ง๋ค ์ ์์
return -1 # ์ต์๊ฐ์ด 8๋ฒ๋ณด๋ค ํด ๊ฒฝ์ฐ
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ๋ฑ๊ตฃ๊ธธ (0) | 2021.04.06 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ์ ์ ์ผ๊ฐํ (0) | 2021.04.06 |
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ์์ (0) | 2021.04.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ๊ฐ์ฅ ๋จผ ๋ ธ๋ (0) | 2021.04.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ์ฌํ๊ฒฝ๋ก (0) | 2021.04.01 |