def solution(N, number):
# 주어진 N이 number와 같은 경우
if N == number:
return 1 # 바로 1 리턴
# 반복되는 숫자를 집합에 하나씩 추가
# {5}, {55}, {555}, ...
d = []
for i in range(1, 9):
s = set()
# 반복해서 만들어진 숫자가 number와 같으면
if int(str(N)*i) == number:
return i # 반복 횟수 리턴
s.add(int(str(N)*i))
d.append(s)
for i in range(1, 8):
for j in range(i):
for num1 in d[j]:
for num2 in d[i - j - 1]:
d[i].add(num1 + num2)
d[i].add(num1 - num2)
d[i].add(num1 * num2)
if num2 > 0: # ZeroDivisionError 방지
d[i].add(num1 // num2)
if number in d[i]:
return i + 1 # N 사용 횟수 최솟값 리턴
return -1 # 최솟값이 8보다 큰 경우 -1 리턴
def solution(N, number):
if N == number:
return 1
s = [set() for x in range(8)]
for i, x in enumerate(s, start = 1):
x.add(int(str(N)*i))
for i in range(1, len(s)):
for j in range(i):
for op1 in s[j]:
for op2 in s[i - j - 1]:
s[i].add(op1 + op2)
s[i].add(op1 - op2)
s[i].add(op1 * op2)
if op2 != 0:
s[i].add(op1 // op2)
if number in s[i]:
answer = i + 1
break
else:
answer = -1
return answer