상세 컨텐츠

본문 제목

백준[2231번]:: 분해합(Python,파이썬)

Dong_Eun2(이동은)/알고리즘(백준)

by Dong_Eun2 2020. 10. 6. 15:08

본문

www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

 

 

나의 코드:

 

def divnum(n):
    print_num = 0
    for i in range(1, n+1):
        div_num = list(map(int, str(i)))
        sum_num = i + sum(div_num)
        if(sum_num == n):
            print_num = i
            break
    
    return print_num


N = int(input())
print(divnum(N))

 

 

위 문제는 브루트 포스 알고리즘으로 

brute: 무식한, force: 힘

즉 완전 탐색 알고리즘을 사용하여, 모든 경우의 수를 구하여 그에 해당하는 값을 출력하는 형태이다.

 

그래서 나는 숫자를 입력받은후에 , 1부터 입력N 값 까지의 모든 경우의 수마다, 자리수를 나누고 해당 숫자를 더하는 형식을 사용하여 그 숫자와 N이 동일할때 생성자를 출력하는 방법으로 코딩해보았다.

 

관련글 더보기

댓글 영역