최대 1 분 소요

문제 링크 : https://www.acmicpc.net/problem/2231

image



풀이 코드


num_in = int(input())

num_least = num_in - 9*len(str(num_in))
if num_least<0:
    num_least=0
for num in range(num_least,num_in):
    sum = num
    for i in str(num):
        sum += int(i)
    if sum == num_in:
        print(num)
        break
    else:
        if num == num_in - 1:
            print(0)
            break



풀이 해설


단순히 0부터 입력받은 숫자까지 전체 탐색을 할 경우 시간 초과가 나는 문제입니다

그렇기 때문에 탐색을 시작할 최소값을 지정해야하는데

각 자리의 수가 0~9 까지인 점을 고려하여
숫자의 길이 * 9 만큼 뺀 수 부터 탐색을 하는 것이 바람직한 문제였습니다

이 문제에서 num_least 라는 값이 음수가 나올 수 있기에 Ex) 3 입력 -> -6
int 변환에서 오류가 발생할 수 있어 num_least가 음수인 경우, 0부터 탐색하도록 하였습니다

댓글남기기