728x90
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
문제 풀이 요약
1. 1부터 10000까지의 숫자 중 생성자가 있는 숫자를 제외한 셀프 넘버를 출력
2. 생성자가 있는 숫자 집합을 생성
3. 위의 범위에서 생성자가 있는 숫자를 빼는 방식이로 풀이 진행
num1 = set(range(1, 10000))
remove_set = set() # 생성자가 있는 숫자 set
for num in num1 :
for n in str(num): #숫자형태로는 각 자리수를 분리할 수 없어서 문자열 변환
num += int(n) #각 자릿수를 합한 수를 num변수에 선언
remove_set.add(num) # add: 집합에 요소를 추가할 때
self_num1 = num1 - remove_set # set의 '-' 연산자로 차집합을 구함
for self_num in sorted(self_num1): # sorted 함수로 정렬
print(self_num)
집합 자료형 특징: 중복요소가 들어갈 수 없음 / 순서가 없음
셀프 넘버를 1부터 순서대로 출력해야하므로 sorted 함수를 이용해서 내림차순으로 정렬
(오름차순일 경우 reverse= True로 지정하여 사용)
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 1712 파이썬 (0) | 2022.10.31 |
---|---|
백준 11654 파이썬 (0) | 2022.10.27 |
백준 8958 파이썬 (0) | 2022.10.25 |
프로그래머스 알고리즘 - 03/25 (0) | 2022.10.18 |
프로그래머스 알고리즘 - 02/25 (0) | 2022.10.13 |
댓글