본문 바로가기
코테 공부 🔥

[백준/파이썬] 4673 : 셀프 넘버

by 서니서닝 2022. 10. 6.
728x90

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

문제 요약 : 양의 정수 n에 대해서 d(n)은 n과 n의 각 자리수를 더하는 함수이다. 이때 n은 d(n)의 생성자라고 한다. 이 생성자가 존재하지 않는 숫자를 셀프넘버라고 한다. 10000이하의 셀프넘버를 출력해라.

 

풀이 )

1차원적이지만 10000까지 저장한 리스트를 만들고, i를 계속 1씩 증가시키면서 셀프넘버가 아닌 숫자를 빼주었다.

깊게 생각안하고 일단 돌아가는 원리를 보자 하고 짰는데 띠용,, 돌아감

ans = [ x for x in range(1,10001)]
i = 1

while i < 10000 :
    tmp = i + sum(map(int,str(i)))
    if tmp in ans :
        ans.remove(tmp)
    i+=1
  
print(*ans,sep='\n')

굳이 10000까지 갈필요가 있을까 싶어서 참고하고자 맞힌 사람 코드를 봤는데

그냥 답을 전부 쓴 값을 print 하는 답이 많았다

증말 알 수 없다....

728x90

댓글