자료구조 및 알고리즘/백준

[python] 4673. 셀프 넘버

viamemine 2023. 7. 27. 12:08
728x90
반응형

 

  • 문제


 

  • 나의 풀이
not_self_number = list()

for i in range(1, 10001):
    number = [int(num) for num in str(i)]
    not_self_number.append(sum(number) + i)

    if i not in not_self_number:
        print(i)

 

나는 각 자릿수를 더하는 과정을 string으로 변환하여 for문으로 처리하였다.

 

그리고 self_number가 아닌 숫자들을 담을 list를 만들어서 생성자를 담아준다.

 

최종적으로 생성자가 없는 셀프 넘버를 출력한다.

 

 

  • 남의 풀이
def self_number(num):
    self_num = num
    while num != 0:
        self_num += num%10 # 오른쪽 끝 숫자를 더함
        num //= 10 # 오른쪽 끝 숫자를 삭제
    return self_num
        
result = []
for i in list(range(1,10001)):
    result.append(self_number(i)) # 셀프 넘버를 저장
    if i not in result: # 셀프 넘버로 넘어온 값이 1~i 숫자중에 없는지 확인
        print(i)

 

나는 각 자리수를 string으로 처리하였다.

해당 풀이는 일의 자리부터 십의 자리, 백의 자리 순으로 처리하는 방법이다.

 

728x90