코딩테스트/백준
백준-4673(파이썬)
김쓰로그
2022. 8. 23. 18:16
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
문제생각
제한시간이 1초였지만 연산을 시행할 구간이 적어서 브루트 포스라고 생각하였다.
문제풀이
- 1부터 10000까지 모든 숫자를 이용해서 위의 식대로 계산한다.
- 이때 결과값에 대응되는 list의 값을 1로 바꾼다.
- list에서 0인 인덱스를 출력한다.
n_list=[0]*10000001
s, t=0, 10
for num in range(1, 10001):
s+=num
while(num!=0):
s+=(num%t)
num//=t
n_list[s], s=1, 0
for i in range(1, 10001):
if(n_list[i]==0):
print(i)
내 풀이는 딱 봐도 메모리도 엄청 잡아먹고 뭔가 코드가 예쁘지가 않다...
문제를 푸는 것도 좋지만 위의 부분도 생각하면서 코드를 작성해보자