https://school.programmers.co.kr/learn/courses/30/lessons/42895?language=python3
풀이 - 나의 생각
DP는 진짜....
다들 정규식을 어떻게 생각하는지 신기하다.
이 문제의 경우는
dp[2] 는 dp[1]에서 사칙연산한 결과이다.
dp[3]는 그러면 dp[1]과 dp[2]를 조합한 결과인 것이다.
그 이후도 다 똑같은 방식이다.
dp[i]는 i 이전의 dp들의 조합의 결과인 것이다.
코드
def solution(N, number):
if N == number:
return 1
# 최대 8까지만 가능
dp = [set() for _ in range(9)]
dp[1].add(N)
for i in range(2, 9):
dp[i].add(int(str(N) * i)) # N, NN, NNN 등 생성
for j in range(1, i):
for op1 in dp[j]:
for op2 in dp[i - j]:
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
return -1
728x90
'프로그래머스 > Lv.3' 카테고리의 다른 글
네트워크 - Python, DFS, BFS (0) | 2024.11.21 |
---|---|
여행 경로 - Python, dfs, 히에로홀드 경로(Eulerian Path) (1) | 2024.11.20 |
여행경로 - Python, dfs, stack (0) | 2024.11.18 |
야근 지수 - Python, heap (0) | 2024.11.17 |
베스트앨범 - Python, defaultdict, sort, sorted (2) | 2024.11.06 |