[Coding test][실버V]BOJ #4673 샐프넘버(수학, 구현)
내 코드
import sys
def d(n):
num_list = list(map(int,str(n)))
next_num= n + sum(num_list)
return next_num
lst = []
for num in range(1,10000):
lst.append(d(num))
full_list = list(range(1,10000))
for i in full_list:
if i not in lst:
print(i)
문제 정의
주어진 수 n 과 주어진 수의 각 자리수를 더하는 함수가 있을때,
n이라는 수가 주어지면 무한 수열을 만들 수 있다.
가령 20이라는 수가 주어지면 다음 숫자는
20 + 2 + 0 = 22
22 + 2 + 2 = 26
26 + 2 + 6 = 34
...
이렇게 수열을 만들 수 있다.
함수를 d(n)이라 할때 n을 d(n)의 생성자라고 한다.
생성자는 한 개보다 많은 경우가 있다.
생성자가 없는 숫자를 셀프넘버라고 하는데, 우리는 셀프넘버를 찾아야한다.
함수 정의
d(n)함수를 정의해야한다.
def d(n):
입력받는 숫자 n을 연산을 위해 리스트형식으로 정수형으로 저장한다.
num_list = list(map(int,str(n)))
생성하는 다음 숫자를 반환한다.
next_num = n + sum(num_list)
return next_num
셀프넘버가 아닌 숫자 찾기
lst = []
for i in range(1,10001)
lst.append(d(i))
셀프넘버는 생성자로 만들지 못하는 숫자이다.
따라서 1부터 10000까지 생성자로 만들 수 있는 숫자(셀프넘버가 아닌 숫자)를 lst에 저장한다.
셀프넘버 찾기
full_lst = list(range(1,10001))
for i in full_lst:
if i not in lst:
print(i)
1부터 10000까지 리스트에서 셀프넘버가 아닌 숫자는 셀프넘버이다.
댓글남기기