[프로그래머스] Lv1. 하샤드 수
문제
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
- x는 1 이상, 10000 이하인 정수입니다.
나의 풀이:
def solution(x):
res = 0
for i in str(x):
res += int(i)
if x % res == 0:
ans = True
else:
ans = False
return ans
빠르게 문제를 풀었다. 이제 코드를 줄여보자.
def solution(x):
res = sum(list(map(int, str(x))))
return True if x % res == 0 else False
전에 배운 map 함수를 사용해보았다. 그리고 if 문 역시 한 줄로 줄여냈다.
다른 사람들의 풀이:
def solution(x):
return x % sum([int(i) for i in str(x)]) == 0
굳이 map 함수를 쓰지 않고도 이렇게 표현이 가능한데 괜히 지난 풀이에 map 함수가 쓰인 걸 보고 사용해보고 싶은마음에 쓴 것 같다.
항상 풀고나면 ‘알면서 왜 생각못했을까?’ 싶은 풀이들이 많아서 아직 아쉽다.
댓글남기기