하샤드 수란 ? 하샤드 수(harshad number)는 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어떨어지는 자연수를 말한다.
출처 : 나무위키
만약 주어진 수 x가 12일 경우 12는 1+2 =3으로 나누어떨어지므로 12는 하샤드 수라고 할수 있습니다~
문제는 아래와 같습니다.
자연수 x가 하샤드 수이면 true, 아니면 false를 반환하는 함수를 작성하라.
먼저 for문을 사용한 코드를 보여드릴게요!
def solution(x):
n = 0
for i in str(x):
n += int(i)
if x%n == 0:
return True
else:
return False
정수 x를 string으로 변환하여 각 자릿수를 한개씩 불러와 다시 int()형으로 변환하여 모두 더해줬습니다!
이렇게 모두 더한 수로 x를 나누었을 때 나머지가 0이면 나누어 떨어진것이기 때문에 True를 반환해줬네욤!!
그럼 또 다른 방법인 map() 함수를 사용하는 방법을 알아볼게요
저는 먼저 x의 각 자릿수의 합을 넣을 hap이라는 정수형 변수를 만들어줬습니다.
hap = sum(list(map(int, str(x))))
위 한줄을 설명드릴게용
map() 함수는 각 요소들에 특정한 함수를 적용시킬때 사용합니다.
자연수 x는 각 요소별로 나누어질수 없으므로 string형으로 변환 후,
다시 int함수를 적용하여 list로 만들어줬습니다.(map 객체이기 때문에 형변환 필요)
왜냐하면 sum()이라는 요소들을 모두 더하는 함수를 사용해야 하기 때문이죵
def solution(x):
hap = 0
hap = sum(list(map(int, str(x))))
if x%hap == 0:
return True
return False
두 방법 모두 사용해보시고 더 좋은 방법이 있다면 댓글로 알려주세용
ㅎㅎ
'파이썬 문제 풀기!' 카테고리의 다른 글
두 정수 사이의 합 구하기 (0) | 2023.12.05 |
---|---|
정수를 내림차순으로 배치하기 (0) | 2023.10.31 |
정수의 제곱근 판별하기 (2) | 2023.10.27 |
약수의 합 구하기 (1) | 2023.10.26 |
짝수와 홀수 구하기 (0) | 2023.10.26 |