본문 바로가기
프로그래밍/알고리즘

백준 4673 파이썬

by monicada 2022. 10. 26.
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

댓글