처음에는 셀프 넘버에 어떤 규칙이 있을까 싶어서 그걸 구하려고 했는데,
그게 아니라 1~10,000까지의 수 중에서 생성자를 뺀 나머지들을 묶으면 쉬웠다
[1~10000까지의 수] - [1~10000까지 생성자가 있는 수들] = [(1~10000까지의)셀프 넘버들] 이 되는 것!
밑줄 친 부분을 만들기 위해 우선 d(n) 함수를 정의해야 한다.
def d(n):
return ( n + sum(map(int, str(n))))
sum 과 map 을 이용해 n + n의 각 자리수 리턴
(n + n//10000 + n//1000 ... 이런 식으로 해서 실패했었다 ㅋㅋㅋ)
a = [] 라는 빈 리스트를 만들어 결과값을 하나씩 추가
a = []
for i in range(1, 10000):
a.append(d(i))
1~10000까지의 수 중
a에 있는 수를 제거하고
남은 수들의 리스트를 출력
self_n = list(range(1, 10000))
for i in range(len(a)):
if a[i] in self_n:
self_n.remove(a[i])
for i in self_n:
print(i)
정리하면 이런 모습이 된다!
def d(n):
return ( n + sum(map(int, str(n))))
a = []
self_n = list(range(1, 10000))
for i in range(1, 10000):
a.append(d(i))
for i in range(len(a)):
if a[i] in self_n:
self_n.remove(a[i])
for i in self_n:
print(i)
'공부하자! > 알고리즘' 카테고리의 다른 글
백준 1018 파이썬 체스판 다시 칠하기 (0) | 2021.02.21 |
---|---|
백준 1065 파이썬 한수 (0) | 2021.01.26 |
백준 4344 파이썬 평균은 넘겠지 (0) | 2021.01.25 |
백준 1546 파이썬 평균 (0) | 2021.01.23 |
백준 3052 파이썬 나머지 (0) | 2021.01.22 |