백준 2231 풀이
Updated:
2231
분해합
IPO
I : Processing을 통해 최소 생성자를 찾을 자연 수
P : 최소 생성자 찾기
O : 최소 생성자 (단: 생성자가 없는 경우 0을 출력)
def make_sum(num):
num = ",".join(num)
num = num.split(',')
num = list(map(int,num))
return num
- ,string으로 입력받아 join 함수를 활용하여 , 로 자릿수 구분
- split함수를 통해 ,를 기준으로 슬라이싱 후 데이터 타입 변환
def make_source(list_num):
source = 0
for i in list_num:
source += i
return source
- 각 자릿수의 합 값 구하기
for i in range (int(num) - (len(num) * 9) , int(num) + 1):
print(i)
print(make_sum(str(i)))
print(make_source(make_sum(str(i))),"\n")
if i + make_source(make_sum(str(i))) == int(num):
print("----------")
print(i)
print("----------")
break
- 각 자릿수의 값에 취할 수 있는 최대값은 자릿수의 길이 * 9.
- ex) 232 -> 999 : 3 * 9 = 27
- 따라서 (int(num) - (len(num) * 9) 부터의 범위만 확인, 생성자의 지침에 일치할 시 return
Leave a comment