본문 바로가기

Python/백준알고리즘

[백준알고리즘 4673 셀프 넘버] python solution

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

소수 구하기에서 아리스토 테네스의 체와 유사한 방법입니다. 

L이라는 1부터 10000까지의 리스트를 생성하고, 가장 첫 번째의 생성자가 되는 1을 타깃으로 둡니다. 
L 이존재 할때 까지 반복되게 설정합니다. 한 스텝을 진행해보면 2는 1을 생성자로 두기 때문에 제거대상이 됩니다.
가장 안쪽 반복문에서 덧셈을 진행합니다 (1+1 연산). 그리고 타깃을 재정의해서 연산된 숫자를 L에서 제거합니다.
위 과정을 리스트 인덱스를 초과할 때까지 진행시켜 except로 빠져나옵니다.

그러면 1을 생성자로 두는 모든 숫자는 L에서 제거가 됩니다. 그 후 L의 첫 번째 pop 대상은 3이 되게 됩니다. 
이 과정을 반복하고 프린트해주면 됩니다.  

반응형