algo lev-1 하샤드 수 (python)
양의 정수 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()
을 사용하면 리스트 안의 요소들을 모두 더할 수 있다.
Comments