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이 되게 됩니다.
이 과정을 반복하고 프린트해주면 됩니다.
반응형
'Python > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘 1003 피보나치 함수] python solution (0) | 2021.12.19 |
---|---|
[백준알고리즘 2447 별찍기] python solution (0) | 2021.12.16 |