티스토리 뷰

728x90

https://programmers.co.kr/learn/courses/30/lessons/12947

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

level1 수, 구현

하나의 양의 정수 x를 받아서 각 자리수를 더한 값으로 x가 나누어떨어지면 true 아니면 false를 반환하는 문제

 

접근방법

C++로 풀이했을 때는 정수의 자리수를 나누는 방식으로 구현했다. (훨씬 빠름) (solution2)

Swift로는 고차함수를 또 사용하고 싶어서, reduce로 풀려고 x : Int -> String -> Array<Character>로 변환해서 풀었다. (solution1)

 

소스코드

import Foundation

func solution1(_ x:Int) -> Bool {
    let sum = Array(String(x)).reduce(0) { $0 + ($1.wholeNumberValue ?? 0) }
    return x % sum == 0
}

func solution2(_ x:Int) -> Bool {
    var varX: Int = x
    var sum: Int = 0

    while varX > 0 {
        sum += varX % 10
        varX /= 10
    }

    return x % sum == 0
}
728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함