본문 바로가기

알고리즘

python 백준4673 셀프 넘버(BOJ4673)

문제링크: 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

이문제는 문제자체도 재밌었고

풀이 자체도 간단했다 그래서 딱히 설명할것도 없다~! 그냥 문제 슥 보고 에라 모르겟다~하고 보러온사람~

돌아가서 다시 풀고오세여~~~~

난 숫자범위가 10000까지라는걸 알기때문에 리스트 크기를 10000이하의 셀프넘버중 가장 큰 값인

9999의 셀프넘버 10035로 설정했다. 

그냥 모든 반복문의 범위를 똑같이 하고싶다면

셀프넘버 값이 10000이하인지 체크하면 될것같다

#셀프넘버 계산
def self_num(num):
  return_value = num
  str_num = str(num)
  for i in range(len(str_num)):
    return_value += int(str_num[i])
  return return_value
num_table = [0] * 10036

for i in range(1, 10001):
  num_table[self_num(i)] += 1

for i in range(1, 10001):
  value = num_table[i]
  if value == 0:
    print(i)