Python/백준 알고리즘

[BaekJoon/Python] : 백준 4673번 - 셀프 넘버

우준세 2021. 1. 3. 19:43
728x90
반응형

 

이번 포스팅은 www.acmicpc.net/problem/4673에서 푼 것을 토대로 작성했습니다.

함수의 두 번째 문제인 셀프 넘버입니다.

 

 

문제.

 

생성자가 아닌 넘버

이 문제에서는 셀프 넘버를 구하는 문제입니다.

 

예를 들어 1은 1+1 = 2의 생성자이고 2는 2+2=4의 생성자

3 -> 6

4 -> 8

5 -> 10 이렇게 진행되는데 

계속 진행하다 보면 생성자가 없는 숫자들이 나옵니다

1, 3, 5, 7, 9, 20, 31 등등 이런 숫자들을 구해야 하는 문제입니다. 


코딩.

def d(n): 
    num = n
    for i in list(str(n)):
        for j in i:
            num += int(i)
    return num

self_num = []

for value in range(1,10001):
    self_num.append(d(value))

for count in range(1,10001):
    if count in self_num:
        continue
    else :
        print(count)

그래서 저는 처음에 d(n)이라는 함수를 만들어 

수열을 만들었습니다 

d(21) 이면 21+2+1이 되어 24를 만들게 하는 함수입니다.

 

그리고 self_num이라는 리스트를 만들고 

1,10000까지 d(n) 함수를 써 만들어지는 숫자들을 append로 리스트에 넣었습니다.

 

그다음 

1 차례대로 self_num 안에 숫자가 있다면 continue로 넘어가고

없다면 print로 차례대로 표시되게, 즉 생성자가 없는 셀프 넘버를 출력하게 만들었습니다.

 


 

하지만 다른 사람들과 비교했을 때 

시간이 현저히 많이 걸린다는 것을 알게 되어 

코드를 다르게 만들어서 만들어볼 생각입니다.

 

다음 포스팅으로 찾아오겠습니다 :) 

728x90
반응형