알고리즘/백준
백준 4673 셀프 넘버 Python
무명 씨
2020. 12. 10. 18:28
반응형
문제풀이
1. 딕셔너리 자료구조를 활용하여 생성자의 개수를 세어줍니다. 딕셔너리 dic의 key는 생성자가 되고, value는 생성자의 개수가 됩니다.
2. 1부터 10000까지의 숫자 n의 d(n)을 구하여, 위의 딕셔너리에서 key d(n)의 value에 1을 더해줍니다.
3. 1부터 10000까지의 숫자들을 key로 하여, value가 0인 값을 출력합니다.
Python Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import sys
from collections import defaultdict
dic = defaultdict(int)
def d(n):
return n + sum(int(s) for s in str(n))
def main():
for i in range(1,10000):
dic[d(i)] = dic[d(i)]+1
for i in range(1,10000):
if dic[i] ==0:
print(i)
if __name__ == '__main__':
main()
|
cs |
Line 8-9 : 과정 2입니다.
Line 10-11 : 과정 3입니다.
문제링크
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
반응형