양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
1. x는 1 이상, 10000 이하인 정수입니다.
| arr | return |
|---|---|
| 10 | true |
| 12 | true |
| 11 | false |
| 13 | false |
입출력 예 #1
입출력 예 #2
입출력 예 #3
입출력 예 #4
def solution(x):
y = str(x)
z = []
for i in range(len(y)):
z.append(int(y[i]))
if x%sum(z) == 0:
return True
else:
return False
def solution(x):
return x%sum(int(i) for i in str(x)) == 0
원리로는 나의 풀이와 같지만,,, 같은 풀이를 이렇게도 간결하게 표현가능하다는 점이 신기해서 가져와봤다. 나는 z라는 리스트 안에 문자형식으로 바꾼 숫자를 한자리씩 append한 반면, list에 넣지않고 그냥 바로 sum을 사용해도 되는걸 .. 이건 첨 알았다 !!!
def solution(x):
z = (map(int, list(str(x))))
if x%sum(z) == 0:
return True
else:
return False
이 코드는 map과 list를 사용해서 별도의 변수 선언과 for문 없이 더 간결하게 표현한 코드이다. map를 잘 사용하는게 정말 한줄코딩 고수들의 특징인 거 같다 ...
저렇게 한줄코드로 구현이 가능한 고수가 되는 그날까지 아자아자 ....ㅠ.ㅠ
도움이 많이 됐어요. 도와주세요