본문 바로가기
IT/Javascript

하샤드 수

by DOSGamer 2022. 7. 13.
반응형

문제

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

전제조건

  • x는 1 이상, 10000 이하인 정수입니다.

풀이방향

  • 자리수의 합을 구하고
  • x 가 자리수의 합으로 나누어 떨어지는 지 확인

풀이

function harshad(x) {
  let answer = true;
  let xArray = x.toString().split('');
  let sum = 0;
  for (let i = 0; i < xArray.length; i++) {
    sum += parseInt(xArray[i]);
  }
  if (x % sum !== 0) {
    answer = false;
  }
  return answer;
}

export { harshad };
import { harshad } from "../src/harshad";

describe("harshad", () => {
  it("should return true for 10", () => {
    expect(harshad(10)).toBe(true);
  });
  it("should return true for 12", () => {
    expect(harshad(12)).toBe(true);
  });

  it("should return false for 11", () => {
    expect(harshad(11)).toBe(false);
  });

  it("should return false for 13", () => {
    expect(harshad(13)).toBe(false);
  });
});

출처

다른 풀이

function Harshad(n){
  return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
반응형

'IT > Javascript' 카테고리의 다른 글

이상한문자 만들기  (0) 2022.07.13
x만큼 간격이 있는 n개의 숫자  (0) 2022.07.13
정수제곱근 판별  (0) 2022.07.13
핸드폰 번호가리기  (0) 2022.07.13
문자열 다루기  (0) 2022.07.13
최대공약수와 최소공배수  (0) 2022.07.13
가운데 글자 가져오기  (0) 2022.07.13
평균구하기  (0) 2022.07.13