개발 공부/알고리즘

[프로그래머스 알고리즘] "하샤드 수" JavaScript / toString, split, reduce

U_D 2022. 3. 16. 10:23

1. 문제 설명

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

 

 

 

2. 제한 조건

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

 

 

 

 

3. 예시

입력/출력

 

4. 풀이

[toString / split / reduce]

  1. x를 문자로 바꿔준다. toString
    ex. 10 -> '10'
  2. 배열로 바꿔준다. split("")
    ex '10' -> ['1','0']
  3. reduce 메쏘드를 활용해 각 배열을 합산해 준다.
  4. 합산 할 때는 문자열로 반환하지 않게 초기값 0(숫자)으로 설정하고 더해지는 숫자를 parseInt를 활용해 숫자로 바꿔준다. ex. 0 + '1' 아니라 0 + 1 이 되도록
  5. x의 값이 a로 나눴을 때 나머지가 0 이면 true(answer)로 만든다.
function solution(x) {
    var answer = true;
    let a = 0;
    a = x.toString().split("").reduce((acc,curr) => acc + parseInt(curr),0)
    answer = (x % a === 0)
    return answer;
}

 

[a 변수 삭제]

특이사항은 parseInt를 안쓰고 +를 써서 정수로 변환해줌

function solution(x) {
    var answer = true;
    answer = x % (x.toString().split("").reduce((acc,curr) => +acc + +curr)) == 0
    return answer;
}