A 사이트에서 아래 조건에 맞는 게시글을 최초로 작성하는 이용자에게 경품을 제공하려 합니다.
현재 작성되어있는 가장 마지막 게시글 이후에 작성된 게시글이어야 합니다.
게시글 번호의 자릿수가 짝수여야 합니다.
게시글 번호가 2n 자릿수 일때, 앞 n 자리의 각 자릿수의 합과 뒤 n 자리의 각 자릿수의 합이 같아야 합니다.
이 사이트의 게시글 번호는 마지막에 작성된 게시글 번호부터 1씩 증가합니다. 예를 들어, 가장 마지막 게시글의 번호가 235386이라면, 이후에 작성되는 게시글의 번호는 235387, 235388 ... 이 되며, 번호가 235387 이상인 게시글이 경품당첨의 대상이 됩니다.
당신은 경품을 받기위해 앞으로 게시글을 몇 개 더 작성해야 하는지 구하려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.
가장 마지막 게시글의 번호 num이 매개변수로 주어질 때, 경품을 받기위해 앞으로 더 작성해야 하는 게시글의 개수를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
□ 매개변수 설명
현재까지 작성된 가장 마지막 게시글의 번호 num이 매개변수로 주어집니다.
num은 1 이상 50,000,000 이하의 자연수입니다.
□ return 값 설명
경품을 받기위해 앞으로 더 작성해야 하는 게시글의 개수를 return 해주세요.
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
def func_a(n):
ret = 1
while n > 0:
ret *= 10
n -= 1
return ret
def func_b(n):
ret = 0
while n > 0:
ret += 1
n //= 10
return ret
def func_c(n):
ret = 0
while n > 0:
ret += n%10
n //= 10
return ret
def solution(num):
next_num = num
while True:
next_num += 1
length = func_b(next_num)
if length % 2:
continue
divisor = func_a(length/2)
front = next_num // divisor
back = next_num % divisor
front_sum = func_c(front)
back_sum = func_c(back)
if front_sum == back_sum:
break
return next_num - num