💻JavaScript/코딩테스트
하샤드 수(Harshad Number)
영진학생
2024. 12. 18. 00:25
문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
x는 1 이상, 10000 이하인 정수입니다.
📄 문제
function solution(x) {
var answer = true;
return answer;
}
💻 내가 쓴 코드
//입력 받은 수를 문자로 변경
//각각의 문자를 쪼갠다
//그리도 모든 수를 더해서 기존의 숫자로 나누어준다.
//나누어지면 true 아니면 false를 반환한다.
function solution(x) {
let har = x.toString();
let sum = 0;
for (let i = 0; i < har.length; i++) {
sum += har[i];
if (x % sum == 0) {
return true;
} else {
return false;
}
}
}
💻 공부 후 코드
//입력 받은 수를 문자로 변경
//각각의 문자를 쪼갠다
//그리도 모든 수를 더해서 기존의 숫자로 나누어준다.
//나누어지면 true 아니면 false를 반환한다.
function solution(x) {
let har = x.toString(); //입력된 x를 문자열로 변경
let sum = 0; // 초기값 0을 할당
for (let i = 0; i < har.length; i++) { // 0부터 문자열의 길의-1 까지 반복
sum += Number(har[i]); // 각각의 문자를 수로 변환해서 더해준다
}
return x % sum === 0; //x를 sum으로 나누었을 때 나머지가 0이면 true 아니면 false를 반환
}
📌 배운 점
숫자를 문자로 바꾸었을 때 다시 문자를 숫자로 변환하는 것을 잊는 실수를 했네요 😭 크게 어려운 점은 없었고 if 문을 쓰지 않고도 바로 단항식을 반환했을 때 true와 false 값을 알려주는 것을 배웠습니다 :)