유니티3D 프로그래밍

백준 단계별로 풀어보기 : 4673번 문제 (셀프 넘버) 본문

Python/백준

백준 단계별로 풀어보기 : 4673번 문제 (셀프 넘버)

tjdgus9955 2021. 9. 10. 22:50

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

sumList라는 함수를 만들고 그 함수 안에는 셀프 넘버가 아닌 값을 찾아내는 로직을 돌린다.

10보다 입력받는 값이 작은 경우는 0을 추가해 줘야 하기 때문에 if문을 작성해서 처리했다.

 

num_sum에서 입력받은 값 n과 n의 값을 하나씩 분리한 numList의 값들을 더하면 무한수열의 공식이다.

 

0부터 10000까지가 주어진 조건이므로 countList에 0부터 10000까지의 값들을 집어 넣는다.

 

무한루프를 통해서 sumList를 돌리고 그 값을 temp라는 곳에 임시로 저장해 둔다.

 

그 값을 리스트와 비교해서 지우면 남는 것은 무한수열을 통해서 만들어 질 수 없는 값, 즉 생성자가 없는 숫자만 남게된다.

 

sumList(10000)가 이 조건의 마지막 값을 충족하므로 sumList(10000)의 값에 도달하면 break를 통하여 무한루프에서 빠져나온다.