[Programmers] NμΌλ‘ νν
Updated:
NμΌλ‘ νν
NμΌλ‘ νν μ ν΄λ¦νλ©΄ λ°λ‘ μ΄λνλ€.
μ²μμ κ°λ¨ν΄ 보μλλ° μ λ§ μ΄λ €μ λ λ¬Έμ μλ€.
λ¬Έμ ν΄κ²°μ μμ΄λμ΄λ N μ n κ°λ₯Ό μ¬μ©ν΄ λ§λ€ μ μλ μλ₯Ό n μ΄ 1μΌ λ λΆν° μ μ₯ν΄ λκ°λ κ²μ΄λ€.
N μ΄ 5 μΌλ μλ₯Ό λ€μ΄λ³΄μλ©΄ 5 λ₯Ό 1 κ° κ°μ§κ³ 5[1] = 5 λ₯Ό λ§λ€ μ μλ€.
5 λ₯Ό 2 κ° κ°μ§κ³ μλ 5[2] = (5 + 5), (5 - 5), (5 * 5), (5 // 5) , 55 λ₯Ό λ§λ€ μ μλ€.
μ¦ 5[2] = 5[1] μ¬μΉμ°μ° 5[1] μ΄λ€.
5[3] = 5[1] μ¬μΉμ°μ° 5[2], 5[2] μ¬μΉμ°μ° 5[1] μ΄λ€.
5[4] = 5[1] μ¬μΉμ°μ° 5[3], 5[2] μ¬μΉμ°μ° 5[2], 5[3] μ¬μΉμ°μ° 5[1] μ΄λ€.
μ¬κΈ°μ 5[1] μ¬μΉμ°μ° 5[3], 5[3] μ¬μΉμ°μ° 5[1] μ ν΄μ£Όλ μ΄μ λ λ§μ , κ³±μ μ μμκ° λ°λμ΄λ κ²°κ³Όκ° κ°μ§λ§
λλμ , λΊμ μ μμκ° λ°λλ©΄ λ΅λ λ°λκΈ° λλ¬Έμ΄λ€.
μ΄λ κ² κ³μ°μ νλ€κ° λ΄κ° μ°Ύκ³ μ νλ μ«μκ° μμΌλ©΄ λͺ κ°μ N μ μ¬μ©νλμ§ μΆλ ₯νλ©΄ λλ€.
μ°Έμ‘° - νλ‘κ·Έλλ¨Έμ€ λ¬Έμ νμ΄ NμΌλ‘ νν
def solution(N, number):
if N == number:
return 1
dp = [set() for _ in range(9)]
for i in range(1, 9):
dp[i].add(int(str(N) * i))
for i in range(2, 9):
for j in range(1, i):
for a in dp[j]:
for b in dp[i - j]:
dp[i].add(a + b)
dp[i].add(a * b)
dp[i].add(a - b)
if b:
dp[i].add(a // b)
if number in dp[i]:
return i
return -1
Leave a comment