728x90
🔥 Programmers Lv.1 : 하샤드 수
🔍 문제 : " 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. "
📎 조건 :
∙ x는 1 이상, 10000 이하인 정수입니다.
∙ x는 1 이상, 10000 이하인 정수입니다.
👉🏻 My answer
function solution(x) {
let sum = 0;
let arr = String(x).split("");
for (let i = 0; i<arr.length; i++){
sum += parseInt(arr[i]);
}
return (x % sum == 0) ? true : false;
}
01. 먼저 x의 각 자리 수를 합해주기 위해 배열로 변환해줍니다.
02. for문을 사용하여 배열의 길이만큼 반복하고 x의 각 자리의 수를 더해준 값인 sum의 식을 만들어줍니다.
03. 그러나 문자열이기 때문에 숫자로 바꿔 더하기 위해서 parseInt()메서드를 사용해줍니다.
04. 그 후 이 합한 수인 sum이 x의 약수이면 true, 아니면 false인 식이 나오도록 식을 만들어줍니다.
02. for문을 사용하여 배열의 길이만큼 반복하고 x의 각 자리의 수를 더해준 값인 sum의 식을 만들어줍니다.
03. 그러나 문자열이기 때문에 숫자로 바꿔 더하기 위해서 parseInt()메서드를 사용해줍니다.
04. 그 후 이 합한 수인 sum이 x의 약수이면 true, 아니면 false인 식이 나오도록 식을 만들어줍니다.
👉🏻 Another ways
function Harshad(n){
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
: n + "" -> 문자열로 바꿔주기
: 나머지 값이 0과 1만 나온다고 했을 때 js에서 0은 false, 1은 true로 출력합니다. 문제에서 나머지가 0일 때 true, 나누어 떨어지지 않을 때는 false를 출력하라고 했으니까 !를 붙여서 false는 true로, true는 false가 되도록 한 것 같습니다.
: 나머지 값이 0과 1만 나온다고 했을 때 js에서 0은 false, 1은 true로 출력합니다. 문제에서 나머지가 0일 때 true, 나누어 떨어지지 않을 때는 false를 출력하라고 했으니까 !를 붙여서 false는 true로, true는 false가 되도록 한 것 같습니다.
'알고리즘 도장깨기' 카테고리의 다른 글
프로그래머스 Lv.1 "없는 숫자 더하기" (1) | 2022.11.21 |
---|---|
프로그래머스 Lv.1 "행렬의 덧셈" (1) | 2022.11.21 |
프로그래머스 Lv.1 "문자열 다루기 기본" (1) | 2022.11.17 |
프로그래머스 Lv.1 "내적" (2) | 2022.11.15 |
프로그래머스 Lv.1 "가운데 글자 가져오기" (2) | 2022.11.15 |
댓글