~๋ชฉ์ฐจ~
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42895
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- 8๋ฒ ์ด์ ์ฐ์ฐ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ธ์งํ๊ณ ๊ฐ ์ธ๋ฑ์ค ํฌ๊ธฐ ๋งํผ์ ์ฐ์ฐ ์ํ์ ๊ฒฐ๊ณผ ์๋ค์ ์ ์ฅํ๋ ๋ฐฐ์ด ์ ์ธ
- dp[i]์๋ i๋ i+1๋ฒ ์ฐ์ฐ์ ํํ ๊ฐ๋ฅํ ์๋ค์ด ๋ค์ด๊ฐ๋ค.
- N์ด 5๋ผ๋ฉด 55๋ ์ฐ์ฐ 2๋ฒ์ ์๋ฏธํ๋ฏ๋ก ํด๋นํ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ฃ์ด ๋๋ค.
- 4์ค for๋ฌธ
1) ์ฐ์ฐ ํ์ i
2) ํด๋นํ๋ ์ฐ์ฐ ํ์ ์ดํ ์ j
3) ์ฐ์ฐ์ ์ํ dp[j]์ ๋ชจ๋ ์ op1
4) i๊ฐ ๋ ์ ์๋ j์ ์ง๊ถ ์ dp[i - j - 1]์ ๋ชจ๋ ์ op2
- ํด๋น ํผ์ฐ์ฐ์ op1, op2์ ๋ชจ๋ ์ฐ์ฐ ํ ์ํ๋ ๊ฐ์ด dp[i]์ ๋ค์ด์๋ค๋ฉด ์ต์ ์ฐ์ฐ ์ ์ด๋ฏ๋ก ๋ฐํ
์์ฑ ์ฝ๋
def solution(N, number):
dp = [set() for i in range(8)] # ์ฐ์ฐ ํ์ ๋ณ ๋ง๋ค ์ ์๋ ์ ์ ์ฅ(์ต๋ ์ฐ์ฐ, 8)
for i in range(1, 9): # {N}, {NN}, {NNN} ...
dp[i - 1].add(int(str(N) * i))
for i in range(8): # 1~8๋ฒ์ ์ฐ์ฐ ํ์ ๋ณ ์ํ
for j in range(i): # 8๋ฒ์งธ ์ฐ์ฐ์ด๋ผ๋ฉด 1~7
for op1 in dp[j]:
for op2 in dp[i - j - 1]:
dp[i].add(op1 + op2)
dp[i].add(op1 - op2)
dp[i].add(op1 * op2)
if op2 != 0:
dp[i].add(op1 // op2)
if number in dp[i]:
return i + 1
return -1
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐