여름의 서재
[프로그래머스] N으로 표현 (DP이용) 본문
728x90
📕 문제
아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.
12 = 5 + 5 + (5 / 5) + (5 / 5)
12 = 55 / 5 + 5 / 5
12 = (55 + 5) / 5
5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.
이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요.
제한사항
- N은 1 이상 9 이하입니다.
- number는 1 이상 32,000 이하입니다.
- 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.
- 최솟값이 8보다 크면 -1을 return 합니다.
def solution(N, number):
answer = -1
dp = []
for i in range(1,9) :
all_case = {int(str(N)*i)}
for j in range(0,i-1):
for op1 in dp[j]:
for op2 in dp[-j-1] :
all_case.add(op1 - op2)
all_case.add(op1 + op2)
all_case.add(op1 * op2)
if op2 != 0:
all_case.add(op1 // op2)
if number in all_case:
answer = i
break
dp.append(all_case)
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2020 카카오 인턴쉽_키패드 누르기 (0) | 2021.09.07 |
---|---|
[프로그래머스] 위클리 챌린지_4주차_직업군 추천하기 (0) | 2021.08.25 |
[프로그래머스] 위클리 챌린지_3주차_퍼즐 조각 채우기 (0) | 2021.08.18 |
[프로그래머스] 위클리 챌린지_2주차_상호 평가 (0) | 2021.08.12 |
[프로그래머스] 위클리 챌린지_1주차_부족한 금액 계산하기 (0) | 2021.08.12 |
Comments