양의 정수 x
가 하샤드 수이려면 x
의 자릿수의 합으로 x
가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x
를 입력받아 x
가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
x
는 1 이상, 10000 이하인 정수입니다.class Solution {
fun solution(x: Int): Boolean {
var answer = true
var digitXSum = x.toString().map{it.toString().toInt()}.sum()
if(x % digitXSum ==0){
answer = true
}else{
answer = false
}
return answer
}
}
내가 푼 과정
var digitXSum = x.toString().map{it.toInt()}.sum()
출력을 해보니 값이 이상해서 생각해보니 toString()을 빼먹음
var digitXSum = x.toString().map{it.toString().toInt()}.sum()
이걸 자꾸 까먹게 되는데 Char 값으로 저장된 값을 그냥 Int로 변환해버리면 이상해진다..
toString() 까먹지마…
class Solution {
fun solution(x: Int): Boolean {
var answer = true
var digitXSum = x.toString().map{it.toString().toInt()}.sum()
if(x % digitXSum ==0){
answer = true
}else{
answer = false
}
return answer
}
}
class Solution {
fun solution(x: Int): Boolean {
var sum = 0
var num = x
while (num > 0) {
sum += num % 10
num /= 10
}
return (x % sum == 0)
}
}
확장함수를 사용하지 않고 while문으로 x의 자릿수를 직접 더한 분 도 계셨다
class Solution {
fun solution(x: Int): Boolean =
x % x.toString().sumBy { it.toInt() - 48 } == 0
}
.sumBy 라는 함수를 사용하신 분도 계심
근데 아직 모르는 함수라서 나중에 공부해보기!
하샤드 수 어떻게 구하는지는 알겠는데 저거 구해서 어디에 쓰는지 궁금해서 물어봄
하샤드 수의 쓰임
수학적 연구
수 이론 연구에서 중요한 역할을 합니다. 특히, 디지털 루트(digital root)와 관련된 연구에서 자주 언급됩니다. 디지털 루트는 하샤드 수의 성질과 밀접한 관련이 있습니다.
컴퓨터 과학, 알고리즘
하샤드 수를 찾는 알고리즘은 컴퓨터 과학에서 연습 문제로 자주 사용됩니다.
나눗셈 연습 도구
학생들에게 기초적인 수학 개념을 가르치는 데 유용합니다. 자릿수 합을 계산하고, 나눗셈의 기본 개념을 이해하는 데 도움을 줍니다.
난수 생성
일부 난수 생성 알고리즘에서 하샤드 수를 사용하여 특정 패턴을 따르는 수열을 생성할 수 있습니다.
결국 내가 일상적인 코딩할 때 사용할 일은 없을 듯 속이 뻥~