자기개발👨💻/코딩 알고리즘
[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리스트에 없으면 출력한다