하샤드 수

Cottonmycotton·2021년 9월 28일
0

Algorithm

목록 보기
10/44
post-custom-banner

문제 설명

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

제한사항

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

입출력 예시

🖊 풀이

📌 join()

  • 문자열을 배열로 push한 뒤 join메서드를 이용하여 문자열로 만들어 배열 밖으로 반환한다 -> "10"

📌 split()

  • 문자열을 쪼갠 다음(구분자 빈문자열)다시 배열로 만든다 -> ["1", "10"]

📌 reduce()

  • reduce함수와 Number 함수를 써서 배열을 순회하며 숫자를 더한 결과값을 반환한다.
  • 매개변수를 결과값으로 나누었을 때 0으로 떨어지면 true, 그렇지 않으면 false를 리턴한다.

💡 코드

function solution(x) {
    let array = [];
   
    if(x <= 0) return;
    else if(1<= x <= 1000) {
        array.push(x);
        const makeString = array.join();
        const cuttingString = makeString.split('');
        const result = cuttingString.reduce((acc, curr) =>  acc + Number(curr), 0 );
        
        return x % result === 0 ? true : false;
          
    }
  }

문제 출처: 프로그래머스

profile
투명인간
post-custom-banner

0개의 댓글