생각하기 상당히 막막했다. 그래서 솔루션을 보았는데, 이를 이해하는데에도 시간이 좀 걸렸다.
풀이방법
- 5를 사용하는 갯수에따라 집합을 만든다.
- 5을 3번 사용한다면, 1번 + 2번, 2번 + 1번, 의 경우의 수가 나올 수 있고, 겹치는 답을 제외하기 위해서 집합을 사용한다.
- for문을 통해서 이를 모두 구해준다.
소스코드
def solution(N, number):
answer = 0
dp = [set() for _ in range(11)]
for i in range(1,9):
dp[i-1].add(int(str(N)*i))
for j in range(i):
for k in dp[j]:
for l in dp[i-j-2]:
dp[i-1].add(k + l)
dp[i-1].add(k - l)
dp[i-1].add(k * l)
if l != 0:
dp[i-1].add(k // l)
if number in dp[i-1]:
return i
return -1
'프로그래머스' 카테고리의 다른 글
네트워크 - UnionFind / BFS (0) | 2021.01.29 |
---|---|
타겟 넘버 - DF (0) | 2021.01.28 |
소수 찾기 - 완전탐색 (0) | 2021.01.16 |
완주하지 못한 선수 (0) | 2021.01.13 |
체육복 (Greedy - 1) (0) | 2021.01.12 |