스파르탄 365 1주차 (3) 셀프 넘버

1주차

백준 4673번 셀프넘버

문제링크 : https://www.acmicpc.net/problem/4673

💡 풀이 전 계획과 생각

: 단순하게 자릿수를 나누어 합치자고 생각
: 자릿수를 while문을 통해 %와 // 을 통해서 나누기로 계획

💡 풀이

def d(n):
    dn = n
    for value in list(str(n)):
        dn += int(value)
    return dn

excep = []
for i in range(10001):
    excep.append(d(i))

excep.sort()

for i in range(1, 10000):
    if i in excep:
        continue
    else:
        print(i)

🧐 막혔던 점과 고민

1. 100부분에서 문제 발생

다른 수들은 문제가 없었으나 10의 배수에서 // 10을 하면 원하는 바인 1이 아니라 10이 나온다는
-> 형변환 없이 while문 만을 이용하여 해결하고자 하였으나 실패

👏🏻 알게된 개념과 소감

형변환은 항시 복잡한 코드 용이라고 생각했는 데,
형변환을 통해 더 간단한 코드를 사용할 수 있음을 깨달았다.

나누어 해결하기 방법에 조금 더 가까워진 느낌이 든다.

좋은 웹페이지 즐겨찾기