-
[ํ๋ก๊ทธ๋๋จธ์ค] N์ผ๋ก ํํ(level3)๐ปProgramming/Algorithm 2025. 8. 29. 16:57
๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/42895
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋์ ๊ณํ๋ฒ(Dynamic Programming) ์ด์ฉ ๋ฌธ์
1. ์ ํ์ ์๋ฏธ ์ ์
dp[i]: N์ ์ ํํ i๋ฒ ์ฌ์ฉํ์ฌ ๋ง๋ค ์ ์๋ ๋ชจ๋ ์๋ค์ ์งํฉ
2. dp ์ด๊ธฐํ
N์ ํ ๋ฒ ์ฌ์ฉํ๋ฉด ํํํ ์ ์๋ ์๋ N๋ฟ
dp[1] = {N}
3. ๋ฐ๋ณต๊ตฌ์ฑ i = 2 ~ 8
dp[i]์ ์ซ์๋ฅผ ์ด์ด๋ถ์ธ ๊ฐ int(str(N) * i)์ ์ถ๊ฐ
1~i๊น์ง j ๋ณ์๋ฅผ ํตํด ๋๋ฉด์ dp[j]์ dp[i-j]๋ฅผ ์ด์ฉํด + , -, *, // ์ฌ์น์ฐ์ฐ
i ๋ฐ๋ณต๋ฌธ๋ง๋ค dp[i] ๋ฐฐ์ด์ number์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธ
๋ง์ฝ ์์ผ๋ฉด ๋ฐ๋ก ๋ฐํ
i๋ฅผ ๋๊น์ง ๋์๋๋ฐ๋ ์์ผ๋ฉด
-1 ๋ฐํ
์ฝ๋
def solution(N, number): if N == number: return 1 dp = [set() for _ in range(9)] dp[1].add(N) for i in range(2, 9): dp[i].add(int(str(N) * i)) for j in range(1, i): for x in dp[j]: for y in dp[i-j]: dp[i].add(x + y) dp[i].add(x - y) dp[i].add(x * y) if y != 0: dp[i].add(x // y) if number in dp[i]: return i return -1'๐ปProgramming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ(๊ณจ๋3) (0) 2025.09.08 [๋ฐฑ์ค] ํธ๋ฆฌ์ ์ง๋ฆ(๊ณจ๋4) (0) 2025.09.02 [Algorithm] BFS, DFS (with Python) (0) 2024.06.28 [Algorithm] ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ํผ๋ณด๋์น ์์ด ๊ตฌํ (0) 2024.04.11 [Algorithm] ์ด์งํ์(Binary Search) (0) 2024.04.09