[문제]
양의 정수 x의 자릿수 합으로 x가 나누어 떨어지면 하샤드 수이다.
하샤드 수이면 true, 아니면 false를 반환.
[로직]
1. 자릿수의 합을 구하기 위해 정수 x를 문자열로 바꾼다.
2. 빈 배열을 생성해주고, 문자열로 바꾼 x를 반복문을 돌며 한자리씩 빈 배열에 Push해준다.
3. reduce()를 이용해 자릿수의 합을 구해준다.
4. x가 자릿수의 합으로 나누어 떨어지면 true를, 아니면 false를 반환한다.
[코드]
function solution(x) {
let str = x.toString();
let sumArr = [];
for (let i=0; i<str.length; i++) {
sumArr.push(parseInt(str[i]));
}
let sum = sumArr.reduce((a,c)=>a+c,0);
return (x % sum === 0) ? true : false
}
1. 자릿수의 합을 구하기 위해 정수 x를 문자열로 바꾼다.
let str = x.toString();
2. 빈 배열을 생성해주고, 문자열로 바꾼 x를 반복문을 돌며 한자리씩 빈 배열에 Push해준다. (이때 정수로 바꾸어 Push)
let str = x.toString();
let sumArr = [];
for (let i=0; i<str.length; i++) {
sumArr.push(parseInt(str[i]));
}
3. reduce()를 이용해 자릿수의 합을 구해준다.
let str = x.toString();
let sumArr = [];
for (let i=0; i<str.length; i++) {
sumArr.push(parseInt(str[i]));
}
let sum = sumArr.reduce((a,c)=>a+c,0);
4. x가 자릿수의 합으로 나누어 떨어지면 true를, 아니면 false를 반환한다.
let str = x.toString();
let sumArr = [];
for (let i=0; i<str.length; i++) {
sumArr.push(parseInt(str[i]));
}
let sum = sumArr.reduce((a,c)=>a+c,0);
return (x % sum === 0) ? true : false
→ 코드리뷰 때 은지님의 풀이를 보니 2, 3번의 과정을 합쳐서 해도 되는 거였다....!
다른 사람들은 어떻게 풀었나
function Harshad(n){
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
모르게따....! 난 for가 좋아...!
'나의 개발일지 > 알고리즘 테스트' 카테고리의 다른 글
[프로그래머스] 의상 - JavaScript (1) | 2024.10.14 |
---|---|
[프로그래머스 - Level 1] 콜라츠 추측 (JS) (0) | 2022.07.20 |
[프로그래머스 - Level 1] 이상한 문자 만들기 (JS) (0) | 2022.07.19 |
[프로그래머스 - Level 1] 정수 내림차순으로 배치하기 (JS) (0) | 2022.07.19 |
[프로그래머스 - Level 1] 서울에서 김서방 찾기 (JS) (0) | 2022.07.18 |