자기개발👨‍💻/코딩 알고리즘

[Python] 백준 4673 셀프넘버 (환기_성공)

천숭이 2021. 6. 20. 01:12

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

creator=[]

for i in range(1,10001):
    length=len(str(i))
    tmp=i
    if length==1:
        creator.append(2*tmp)
    elif length>1:
        for j in range(0,length):
            tmp+=int(str(i)[j])
        creator.append(tmp)
# print(creator)

for i in range(1,10001):
    if i not in creator:
        print(i)
  • 생성자를 저장해줄 리스트 creator 선언
  • 반복문을 이용해 생성자를 만들어줄 것인데, 최종 덧셈완성됨 tmp가 임시 생성자이고 반복문 탈출하기 전 creator리스트에 tmp를 추가한다.
  • tmp는 순회중인 정수로 초기화하고, 한자리 숫자일 경우에는 2*tmp를 creator에 추가한다
  • 만약, 순회중인 정수가 두자리수 이상일 경우 tmp에 자릿수대로 저장한다. 이 때, 반복문을 이용한다.
  • 1~10000 반복문을 순회하며 creator리스트에 없으면 출력한다