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