Coding Test/Baekjoon
[백준] 4673번 셀프 넘버 - Python
라딘
2022. 9. 8. 11:33
[백준] 4673번 셀프 넘버 - Python
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
https://www.acmicpc.net/problem/4673
문제
양의 정수 n이 주어질 때, n과 n의 각 자리수를 더하는 함수 d(n)이 있습니다.
예를 들어 d(75) = 75 + 7 + 5 = 87 이며, 75는 87의 생성자라고 합니다.
생성자가 없는 숫자는 '셀프 넘버'라고 할 때, 10000보다 작은 셀프 넘버를 한 줄에 하나씩 출력해주세요.
아이디어
먼저 d(n) 함수와 9999까지의 수를 포함하는 리스트를 만듭니다.
9999까지의 수를 d(n) 함수에 넣어 나온 값을 리스트에서 순서대로 제거하면 생성자가 없는 값들만 남게됩니다.
코드
def self_number(a):
a1 = list(str(a))
a1 = list(map(int, a1))
for i in range(len(a1)):
new_a = a + sum(a1)
return new_a
ans = list(range(0,10000))
for j in range(10000):
num = self_number(j)
if num in ans:
ans.remove(num)
else:
continue;
for k in range(len(ans)):
print(ans[k])