알고리즘 - 프로그래머스 하샤드 수 (Swift)

2020. 7. 3. 17:13카테고리 없음

반응형

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

  • x는 1 이상, 10000 이하인 정수입니다.

이 문제는 이전에도 진행했던 정수값을 스트링 타입으로 변환시에  Array[Character] 타입으로 변환되는 내용을 다루었는데요 동일합니다.

 

정수 -> String 타입변환 -> Array[Character] -> Reduce 모든 값을 더하는 함수를 진행 ->

내부 클로저에서 Character타입을 String타입으로 다시 Int타입으로 형변환하여 연산을 진행하여 나온 결과 값으로

 

입력된 수로 나누어 0이되면 True를 리턴해주는 방식을 이용 하였습니다.

 

func solution(_ x:Int) -> Bool {
    return x % String(x).reduce(0, { $0 + Int(String($1))! }) == 0
}

 

반응형