programmers 코딩테스트 : 하샤드 수

H·2022년 4월 20일
0

Coding Test

목록 보기
5/26

🔔 하샤드 수

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

⛔ 제한 조건
x는 1 이상, 10000 이하인 정수입니다.

하샤드 수?
주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어떨어지는 자연수
x = nm n+m = y x/y의 나머지는 0이다.


🔠 통과한 코드

function solution(x) {
  let answer = true;
  let numberSum = 0;
  let numberArray = String(x) 
  .split("")
  .map((x) => {
    return Number(x);
  });
  numberArray.forEach((el) => {
    numberSum += el;
    return answer;
  });
  answer = x / numberSum > 0 && x % numberSum === 0 ? answer : !answer;
  return answer;
}

📌 코드 설명

  1. x는 number이기 때문에 배열로 변환해 map()으로 x의 숫자를 각각 리턴해 배열로 담아준다.
  2. 해당 배열을 forEach()를 사용해 배열 내부의 숫자를 더한 값을 numberSum에 담아준다.
  3. X/numberSum 해줌
  4. 조건이 모두 부합 하는 경우에 true,
    ▸ 나머지는 0 이어야함
    ▸ 나눗셈의 몫은 0보다 커야함
profile
🤘 돌머리도 ROCK이다! 🤘

0개의 댓글