def solution(N, number):
if N == number:
return 1
num_list = [set() for x in range(8)] #인덱스 + 1 이 사용된 숫자의 갯수
for i in range(1,8+1):
value = int(str(N)*(i))
print(value)
if number == value:
return i
num_list[i-1].add(value)
for i in range(1,8+1): # 1개 일때는 N 말고 다른 선택지가 없음
for e in range(i-1):# i개 는 i-1 의 위치에
for j in range(i-e-1): # i 개의 N을 만드는데 e 개를 제외한 나머지 개의 N을 사용해서 나오는 수의 집합
for val1 in num_list[e]:
for val2 in num_list[j]:
num_list[i-1].add(val1+val2)
num_list[i-1].add(val1-val2)
num_list[i-1].add(val1*val2)
num_list[i-1].add(val2-val1)
if val1 != 0:
num_list[i-1].add(val2//val1)
if val2 != 0:
num_list[i-1].add(val1//val2)
for j,num in enumerate(num_list[:8]):
for i in num:
if number == i:
return j+1
return -1
전의 연산을 기억하기 자리수 만큼의 수를 기억하는것이 필수적이다.
만을 6개의 N을 이용한거면 (1,5) (2,4)(3,3)...(5,1) 이조합의 수 많큼 가능한 값이 존재한다는 점이 어려줬다.