하샤드 수란 ? 하샤드 수(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

+ Recent posts