하샤드 수

문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

func solution(_ x:Int) -> Bool {
    let digits = String(x)
    var sum = 0
    for i in digits {
        if let digit = Int(String(i)) {
            sum += digit
        }

    }

    if x % sum == 0 {
        return true
    }
    return false
}

먼저 정수를 쪼개 합을 구하기 위해 digits 라는 상수를 선언하여 정수 x 를 String으로 변환한다.
그 이후 쪼갠 정수의 합을 구해둘 sum 변수를 선언한다.

for 문을 이용하여 digits 의 쪼개진 인자들을 i 로 접근하는 식을 만들어준다.
for 문 내 i 를 다시 인트로 바꿔 받아줄 digit 상수를 선언 한다
String 타입의 i 는 digit의 합을 담게 되고 다시 Int 로 바꿔준 후 sum 에 담아준다.
sum의 나눈 값의 나머지가 0일 경우 하샤드 수이므로 true를 출력하도록 하고
그 외 false가 출력되도록 설정하면 해당 알고리즘이 해결된다.

'◽️ Programming > ◽️ Algorithm' 카테고리의 다른 글

콜라츠 추측  (0) 2024.03.04
두 정수 사이의 합  (0) 2024.03.03
정수 내림차순으로 정리하기  (0) 2024.03.03
정수 제곱근 판별  (0) 2024.03.03
문자열을 정수로 바꾸기  (0) 2024.03.03