함수
15596번 정수 N개의 합
def solve(a):
return sum(a)
test_list = [1,2,3,4,5,6]
result = solve(test_list)
print(result)
=> 21
4673번 셀프 넘버
#문제에서 정의한 생성자를 만드는 코드
def solve(n):
sum = 0
result = []
for i in str(n)[0:]:
result.append(i)
for j in result:
sum = sum + int(j)
n = n+sum
return n
range_list= list(range(1,10001))
#셀프 넘버를 리스트에 담는 코드
return_list = []
for i in range(1, len(range_list)+1):
new_number = solve(i)
if new_number in return_list:
pass
else:
return_list.append(new_number)
#셀프 넘버를 출력하는 코드
for i in range_list:
if i in return_list:
pass
else:
print(i)
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다.
양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다.
예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다.
33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...
n을 d(n)의 생성자라고 한다. 위의 수열에서 33은 39의 생성자이고, 39는 51의 생성자, 51은 57의 생성자이다. 생성자가 한 개보다 많은 경우도 있다. 예를 들어, 101은 생성자가 2개(91과 100) 있다.
생성자가 없는 숫자를 셀프 넘버라고 한다.
1065번 한수
c = int(input())
test_number = list(range(1,c+1))
def han_number(n):
str_list = []
for i in str(n)[0:]:
str_list.append(i)
if len(str_list) <3:
return 1
else:
case =[]
for i in range(1, len(str_list)):
test = int(str_list[i]) - int(str_list[i-1])
case.append(test)
if len(case) == case.count(case[0]):
return 1
else:
return 0
count = 0
for i in test_number:
a = han_number(i)
count = count+a
print(count)
한수란 어떤 정수 x의 각 자리가 등차수열을 이루는 수를 의미한다.
예를 들어 어떤 정수 123의 경우 각자리는 1,2,3이 된다.
그리고 등차는 1이 되므로 정수123은 한수가 된다.
한자리수 두자리수의 정수는 한수이다.
최소 세자리수부터 한수가 되기 위한 각 자리별 등차계산이 가능하다.