아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.
5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요.
def solution(N, number):
idx = ['+','-','*','/']
box = ['']
max_cnt = 9
for i in range(1, 9):
if int(str(N) * i) == number : return i
box.append([str(N) * i])
for j in range(1, len(box)-1): # outer
for o in range(len(box[j])): # inner
for k in range(1, len(box)-1): # outer
if j+k >= max_cnt : break
for h in range(len(box[k])): # inner
for m in idx:
now_form = box[j][o] + m + box[k][h]
if int(eval(now_form)) == number and max_cnt > j+k : max_cnt = j+k
if int(eval(now_form)) != 0 and str(int(eval(now_form))) not in box[j+k] : box[j+k].append(str(int(eval(now_form))))
return max_cnt if max_cnt < 9 else -1