문제
양의 정수 x가 하샤드 수이려면
x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9 이고,
18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아
x가 하샤드 수인지 아닌지 검사하는 함수,
solution을 완성해주세요.
해결
function solution (x) {
const answer = (x+'')
.split('')
.map((e) => e*1)
.reduce((_, e) => _ + e);
return x % answer === 0 ? true : false;
}
우선 x+''으로 문자 형변환을 해준 뒤
split을 통해 배열로 만들었다.
그러고 map을 통해 *1을 해서 숫자 형변환을 하고
reduce로 배열의 전체 합을 구했다.
return할 때 삼항연산자를 통해
x와 answer의 몫이 0이면 true를 반환하게 했다.
다른 사람의 풀이
// 다른 사람의 풀이
function Harshad(n){
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
reduce안에 형변환을 어떻게 하지 하는 생각을 했는데
+를 붙여주니 깔끔하고
map메서드를 굳이 사용하지 않아도 되었다..!
그리고 삼항연산자를 사용하지 않고
앞에 !를 붙여 true false를 반환하게 한 것도 배워갔다.
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 두 정수 사이의 합 (1) | 2023.12.04 |
---|---|
[코딩테스트] 콜라츠 추측 (0) | 2023.11.30 |
[프로그래머스 코딩테스트] 자연수 뒤집어 배열로 만들기 (0) | 2023.11.17 |
[코딩테스트] 특정 수 이하의 홀수 배열만 반환 (0) | 2023.11.06 |
[코딩테스트] 최빈값 구하기 (1) | 2023.11.03 |