[프로그래머스] Lv.1 하샤드 수 (JS)

아름·2023년 11월 16일
0

알고리즘

목록 보기
8/26

🔎 문제

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

입출력 예


🔓 풀이 과정

고민

1) let sum = 0으로 할당
2) 숫자 x를 문자열로 변환해주고 split 사용하여 배열로 새롭게 생성
3) for문을 사용해서 배열들을 다 합해보고 sum에 재할당 // 이 과정에서 오래 걸렸다ㅠ
4) x를 sum으로 나눈 나머지가 0이면 true, 나머지가 있다면 false

나의 풀이

function solution(x) {
  let sum = 0;
  let arr = String(x).split("");
  for (let i = 0; i < arr.length; i++) {
    sum += +arr[i]; // arr의 i번째 요소는 문자열이므로 숫자로 변환하여 더한다
  }
  return x % sum == 0 ? true : false; // 삼항 연산자 사용
}

그 밖의 풀이

function solution(x) {
  return !(x % (x + "").split("").reduce((a, b) => +a + +b));
}
// reduce를 사용해 배열 안의 요소를 숫자로 변환하여 다 더해줌
// js에서 0은 false, 1은 true를 출력함
// 문제에서 제시한 것은 나머지가 0일 때 true이므로 !를 붙여 반대로 출력하기
profile
내 꿈은 개발자

0개의 댓글