백준

백준 4673번: 셀프 넘버

4673번: 셀프 넘버 (acmicpc.net)

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
= []
num = 1
 
for i in range(10000):
    n.append(i+1)
 
for i in range(10001):
    if num<10 and num>0:
        temp = num+num
    if num>=10 and num<100:
        a = num%10
        b = num//10
        temp = num+a+b
    if num>=100 and num<1000#999
        a = num%10 #9
        b = num//10 #99
        c = b%10 #9
        d = b//10 #9
        temp = num + a+c+d
    if num>=1000 and num<=10000#9999
        a = num%10 #9
        b = num//10 #999
        c = b%10 #9
        d = b//10 #99
        e = d%10 #9
        f = d//10 #9
        temp = num+a+c+e+f
    if temp in n:
        n.remove(temp)
        num+=1
    else:
        num+=1
for i in range(len(n)):
    print(n[i])
cs

 

초반에 시간초과가 나서  str을 이용하는 방법을 위 방법으로 바꿔보았는데

아마 str을 이용해서 풀어도 정답이 될 것 같다. 초반에 잠깐 실수했었던 것 같다.

'백준' 카테고리의 다른 글

백준 7287번: 등록  (0) 2021.07.09
백준 1316번: 그룹 단어 체커  (0) 2021.07.07
백준 2960번: 에라토스테네스의 체  (0) 2021.07.02
백준 14891번: 톱니바퀴  (0) 2021.07.02
백준 14500번: 테트로미노  (0) 2021.07.02