728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42895
분석
n번 이어 붙여서 만든 수
1번 사용해서 표현한 수 집합 (사칙 연산) n -1번 사용해서 표현한 수 집합
2번 사용해서 표현한 수 집합 (사칙 연산) n -2번 사용해서 표현한 수 집합
.
.
.
n -1번 사용해서 표현한 수 집합 (사칙 연산) 1번 사용해서 표현한 수 집합
N으로 표현할 수 있는 경우
- N을 이어붙이기 = NN
- N+N
- N*N = N^3
- N-N =0
- N/N =1
풀이
def solution(N, number):
if number == 1:
return 1
arr = []
for i in range(1, 10): # 1개부터 8개까지 확인
s = set()
s.add(int(str(N)*i)) # 이어붙이는경우
for j in range(i-1): # (1, n-1)부터 (n-1, 1)까지 사칙연산
for k1 in arr[j]:
for k2 in arr[-j-1]:
s.add(k1+k2)
s.add(k1*k2)
s.add(k1-k2)
if k2!=0: s.add(k1/k2)
# 만든 집합에 number가 처음 나오는지 확인
if number in s:
return i
arr.append(s)
return -1
728x90