반응형
문제접근
- 범위가 100만으로 제한된 다는 것은 많은 탐색을 요구할 때 보통 100만으로 주어진다.
- 여러 생성자를 담아서 그 중에서 작은 값을 구하는 것
코드
# 분해합
n = int(input())
divide_list = [0,1,10,100,1000,10000,100000,1000000] # 연산을 할 배열을 미리 생성한다.
arr = [] # 생성자 리스트
for i in range(1,n): # 1부터 자기보다 작은 수를 탐색한다.
next_num_list = [i] # 생성자를 만들 리스트
temp_num = i # 계산을 수행할 번호
for j in range(len(str(i)),0,-1): # ex) 100이면 1의자리 10의자리 100의자리 총 3번 탐색해야하므로 위와 같이 범위를 설정한다.
if temp_num == 0:
break
next_num_list.append(temp_num // divide_list[j]) # 몫을 생성자 만드는 리스트에 추가한다.
temp_num = temp_num % divide_list[j] # 숫자를 줄여준다.
if sum(next_num_list) == n: # n의 생성자임을 만족한다.
arr.append(i) # 생성자 목록에 추가한다.
if arr:
print(arr[0])
else:
print(0)
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] 요세푸스 문제0 11866 (파이썬) (0) | 2021.03.16 |
---|---|
[백준] 잃어버린 괄호 1541 (파이썬) (0) | 2021.03.16 |
[백준] [조합] 블랙잭 2798 (파이썬) (0) | 2021.03.15 |
[백준] [수학] 터렛 1002 (파이썬) (0) | 2021.03.15 |
[백준] [DP] 계단오르기 2579 (파이썬) (0) | 2021.03.15 |