nan + nan = 2nan

[백준][Python3] #4673. 셀프 넘버 본문

Python/백준 알고리즘

[백준][Python3] #4673. 셀프 넘버

2nan 2023. 1. 14. 13:37
728x90


코드 입력

def get_self_num(n):
    if n < 10:
        return n + n
    elif 10 <= n < 100:
        return n + (n // 10) + (n % 10)
    elif 100 <= n < 1000:
        return n + (n // 100) + ((n % 100) // 10)  + ((n % 100) % 10)
    elif 1000 <= n < 10000:
        return n + (n // 1000) + ((n % 1000) // 100) + ((n % 100) // 10) + ((n % 100) % 10) 

list_not_self_num = [get_self_num(i) for i in range(1, 10000) if get_self_num(i) < 10000]

for i in range(1, 10000):
    if i not in list_not_self_num:
        print(i)

오랜만에 알고리즘 문제를 풀어본다.예전에 마지막으로 해당 문제를 보고 어떻게 풀어야할지 조금 난감했는데, 개발 업무를 하면서 늘어난 짬 때문인지어떻게 풀어야할지 머리 속에 좀 그려졌다.결국, 10000 이하의 수 중에 자기 자신과 각 자리 수의 합을 만들어주는 함수를 생성해 리스트에 담은 다음,for 문을 이용해 리스트에 해당 숫자가 없으면 print를 하면 되는 로직이었다.뭔가 조금 더 효율적이고 창의적으로 풀 수도 있을 것 같은데, 나중에 나은 알고리즘이 생각나면 다시 적용해봐야겠다.


출처 : 백준 Online Judge

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

Comments