Python/프로그래머스

[프로그래머스 level1] 하샤드 수

묘걍 2023. 8. 28. 15:39

문제

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

<제한 조건>

- x는 1 이상, 10,000 이하인 정수

내가 생각한 풀이 방법

일단은

x → 문자열 → 리스트 → int → sum()

x → 문자열 → for문 돌면서 int(i) 하고 num += i

x / 위 결과 == 0 이면 answer = True

라고 생각했는데

각 자릿수의 합을 구하는 과정을 더 단순화 시키고 싶다.

코드로 구현

def solution(x):
    num = 0
    x_to_str = str(x)
    for i in x_to_str:
        int(i)
        num += i
    if x % num == 0:
        answer = True
    else:
        answer = False
    return answer

- num += i 부분에서 i가 위에서부터 내려오면서 int형으로 바뀐 채로 num에 더해질거라고 생각했는데 그게 아닌건가?

 

2차 시도

def solution(x):
    num = 0
    x_to_str = str(x)
    for i in x_to_str:
        num += int(i)
    if x % num == 0:
        answer = True
    else:
        answer = False
    return answer

성공!

아마 위에서 의심했던 부분이 맞는 듯