문제
https://www.acmicpc.net/problem/4673
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
풀이
def d(n):
a = n
while True:
b = n%10
a += b
n = n//10
if n<10:
a += n
break
return a
nums = []
for i in range(1,10000):
n = d(i)
nums.append(n)
for i in range(1, 10000):
if i not in nums:
print(i)
d라는 함수를 만들어서 나오는 모든 숫자들을 nums라는 리스트에 저장해주고
nums이라는 리스트에 포함되어 있지 않은 숫자들(생성자가 없는 숫자들)을 출력해주면 된다.
def d(n):
a = n
while True:
b = n%10
a += b
n = n//10
if n<10:
a += n
break
return a
nums = set([ _ for _ in range(1, 10001)])
nums2 = set()
for i in range(1,10000):
n = d(i)
nums2.add(n)
nums = nums - nums2
for i in sorted(nums):
print(i)
집합을 이용한 풀이
리스트를 집합으로 생성하여 차집합으로 구할 수도 있다.
'알고리즘 > 구현' 카테고리의 다른 글
| [프로그래머스][js] 주차 요금 계산 (0) | 2024.07.06 |
|---|---|
| [백준][js] 20436_ZOAC 3 (0) | 2024.06.23 |
| [백준][python] 1021 회전하는 큐 (0) | 2022.03.10 |
| [백준][python] 1745 방 번호 (0) | 2022.02.19 |
| [백준][python] 1316 그룹 단어 체커 (0) | 2022.02.19 |