본문 바로가기
백준

분해합 - 2231번

by 청원뿔세포 2022. 9. 30.

이론상 가능한 작은 최소 생성자부터 시작해서 1씩 증가시키면서 탐색하는 방식으로 문제를 해결했다.

특정 값들에서 오류가 발생하여 여러 반례를 찾아가면서 코드를 마무리 지었다.

반례 2 -> 1, 1 -> 0, 1000000 -> 0 ...

n = int(input())

# 만약 n 이 3자리수라면 9 + 9 + 9 = 27 ,
# 9*3 보다 작은 수가 최소 생성자의 한계이다.
# n 이 k자리수의 수면 k - 9*k 부터 1씩 증가시키면서 탐색

k = len(str(n))
# print(k, n - 9 * k)
def ten_sum(n):
    # print(n)
    a = str(n)
    aa = 0
    for i in a:
        aa += int(i)
    return aa + n

if n - 9 * k > 0:
    for i in range(n - 9 * k, n+1):
        if ten_sum(i) == n:
            print(i)
            break
        if i == n:
            print(0)
else:
    for i in range(1, n+1):
        if ten_sum(i) == n:
            print(i)
            break
        if i == n:
            print(0)

'백준' 카테고리의 다른 글

ACM 호텔 - 10250 번  (0) 2022.10.01
이항 계수 1 - 11050번  (0) 2022.10.01
팰린드롬수 - 1259번  (0) 2022.09.30
RGB거리 2 - 17404번  (0) 2022.09.29
RGB거리 - 1149번  (0) 2022.09.29

댓글