📜 문제 요약
어떤 수 n에 대해 d(n) = n + 각 자리 숫자의 합으로 정의할 때,
어떤 수가 d(n)의 결과로 나올 수 있다면, 그 수는 생성자가 있는 수라고 해.
- 예:
- d(75) = 75 + 7 + 5 = 87 → 87은 생성자가 75
- 1~10000 중에서 생성자가 없는 숫자 (셀프 넘버) 만 출력하면 됨
💡 아이디어
- 1부터 10000까지 순회하면서,
- d(n) 값을 전부 구해서 생성된 수들을 기록
- 그리고 1부터 10000까지 중에서 한 번도 생성되지 않은 수만 출력
핵심:
- d(n) 자리수 분해해서 합
- 10000 이하에서 생성된 수를 체크
- 생성 안 된 숫자만 출력
def d(n):
num = list(str(n))
asw = n
for i in range(len(num)):
asw += int(num[i])
return asw
SET = list(range(1,10001))
for n in range(1,10001):
if d(n) in SET:
SET.remove(d(n))
for i in range(len(SET)):
print(SET[i])
'매일 BOJ' 카테고리의 다른 글
| (매일 BOJ) Python 1157번 단어 공부 (0) | 2025.03.23 |
|---|---|
| (매일 BOJ) Python 11650 좌표 정렬하기 (0) | 2025.03.23 |
| (매일 BOJ) Python 2751번 수 정렬하기 2 (0) | 2025.03.21 |
| (매일 BOJ) Python 1789번 수들의 합 (0) | 2025.03.21 |
| (매일 BOJ) Python 1316번 그룹 단어 체커 (0) | 2025.03.21 |