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
반응형
'Python > 백준 알고리즘' 카테고리의 다른 글
[BaekJoon/Python] : 백준 11654번 - 아스키 코드 (0) | 2021.01.07 |
---|---|
[BaekJoon/Python] : 백준 1065번 - 한수 (0) | 2021.01.05 |
[BaekJoon/Python] : 백준 15596번 - 정수 N개의 합 (0) | 2021.01.03 |
[BaekJoon/Python] : 백준 4344번 - 평균은 넘겠지 (0) | 2021.01.02 |
[BaekJoon/Python] : 백준 8958번 - OX 퀴즈 (0) | 2021.01.02 |