티스토리 뷰

 

접근법


생소한 개념이라 문제를 이해하기 어려웠다.

 

핵심은 가장 작은 생성자를 구해야 한다는 점이다. 입력값 N이 주어졌을 때 생성자를 만드는 규칙에 따라서 가장

 

작은 숫자부터 차례대로 확인을 하면 편할 것이다.

 

즉, 생성자를 만드는 규칙은 모든 자리의 수와 해당 숫자를 더했을 때 입력값 N을 만족시키면 되기 때문에

 

N의 각 자릿수의 최대값은 9로 N ± ( 자릿수 * 9 ) 만큼의 범위만 확인해주면 된다 ! 

 

예를 들어서 256이라는 숫자라고 한다면 각 자리의 숫자는 가장 큰 숫자가 9이므로

 

256 - 27 = 229 이므로 229부터 차례대로 규칙에 따라 N을 만족하는지 확인하면 된다.

 

풀이


def constructor(N):
    
    minimum = N - len(str(N)) * 9
    minimum = 1 if minimum < 1 else minimum
    
    for i in range(minimum, N):
        
        Sum = i
        Sum += sum(map(int,str(i))) 
        
        if Sum == N:
            print(i)
            return
        
    print(0)
    
constructor(int(input()))

 

@ 문제 출처 : 백준

댓글
링크
최근에 올라온 글
Total
Today
Yesterday