1. 문제 설명 (📎Link)
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
2. 제한사항
n은 1이상 10000 이하인 자연수입니다.
📝 문제
func solution(_ x:Int) -> Bool {
return true
}
💻 내가 푼 방법(테스트 성공)
func solution(_ x:Int) -> Bool {
//들어온 양의 정수 x를 개별적인 정수로 나눠주기 위해 String으로 형변환
var str = String(x)
//str값에 map함수 적용하여 다시 개별적인 Int값으로 구분
//후에 다시 reduce함수 적용하여 모든 요소들을 더해준 값을 변수 sum에 넣어줌
var sum = str.map{Int(String($0))!}.reduce(0, +)
//(Bool로 반환해야 하므로)나머지 값이 0인 경우 true 출력
//아닌 경우는 false 출력
if x % sum == 0 {
return true
} else {
return false
}
}
🔎 의문점과 공부한 것
1. 처음에 map함수와 reduce함수를 따로 써서 총 3개의 변수가 필요했는데 아래와 같이 줄일 수 있다는 걸 알았다
var arr = str.map{Int(String($0))!}
var sum = arr.reduce(0, +)
→ 변경 전
var sum = str.map{Int(String($0))!}.reduce(0, +)
→ 변경 후
'🍎 Swift > Programmers' 카테고리의 다른 글
[👾 Programmers] 23. 콜라츠 추측 (0) | 2024.06.28 |
---|---|
[👾 Programmers] 22. 두 정수 사이의 합 (0) | 2024.06.28 |
[👾 Programmers] 20. 정수 내림차순으로 배치하기(업데이트 필요) (0) | 2024.06.24 |
[👾 Programmers] 19. 정수 제곱근 판별 (0) | 2024.06.23 |
[👾 Programmers] 18. 문자열 정수로 바꾸기 (0) | 2024.06.23 |