algo lev-1 하샤드 수 (python)

less than 1 minute read

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.

자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

출처 : 프로그래머스 Level1

내가 푼 풀이

자리수를 하나하나 구해서 더한 뒤(sumAll), 원래 숫자와 더한 숫자들이 나눠떨어지는지 여부에 대한 True, False를 반환하게 만들었다. 더 짧고 효율적으로 만들고 싶었는데 어떻게 해야 할지 모르겠다. 흠…

def solution(x):
    x1 = x
    sumAll = 0

    while x > 0 :
        sumAll += x % 10
        x //= 10

    if x1 % sumAll == 0 :
        return True
    else :
        return False
x = 12345

x/10   # 1234.5   / :나눗셈 연산
x%10   # 5        % : 나머지를 구하는 연산
x//10  # 1234     //  :  몫을 구하는 연산

다른 사람의 풀이

def solution(n):
    return n % sum([int(c) for c in str(n)]) == 0

오… 숫자를 나눠서 더하지 않고 리스트의 요소들로 받아버리면 더 간편하게 구할 수 있다. sum()을 사용하면 리스트 안의 요소들을 모두 더할 수 있다.

Categories:

Updated:

Comments