[브루트포스/ BaekJoon] # 2231 분해합

su_y2on·2022년 3월 6일
0

알고리즘

목록 보기
29/47
post-thumbnail

백준 2231번
주어진 숫자를 분해합으로 갖는 가장 작은 수 구하기

여기서 분해합은 자기자신과 각 자리 수의 합을 말합니다 ex) 23 -> 23+2+3




풀이 1. 브루트포스

def answer(N):
    for i in range(1,N):
        sum = i
        number = str(i)

        for num in number:
            sum += int(num)

        if sum == N:
            return i

    return 0

N = int(input())
print(answer(N))
  • N의 범위가 10^6이하기 때문에 1~N까지 전체 탐색
  • 제일 작은 수를 찾아야하기때문에 1부터 돌리면서 발견하는 즉시 return을 합니다
  • 없으면 0을 리턴합니다
  • 각자리 수 합은 10으로 나눈 몫으로 구할 수도 있지만 문자열로 취급해서 인덱싱줬습니다.

0개의 댓글