[프로그래머스] 하샤드 수 - Javascript

devmin24·2021년 8월 6일
0

⏳ 도전! 알고리즘

목록 보기
25/32
post-thumbnail

문제 링크

문제

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

arrreturn
10true
12true
11false
13false

풀이

하샤드 수의 규칙과 출력 조건을 보면 이렇다.

  1. 18 = 1 + 8 = 9 / 18 % 9 = 0 (나머지가 0, 나누어 떨어지면 true)
  2. 11 = 1 + 1 = 2 / 11 % 2 = 1 (나누어 떨어지지 않으므로 false)
  3. ab = a + b = sum(a,b) / ab % sum(a,b) = 0이면 true, 0이 아니면 false

그럼 이제 나머지를 이용해 0일 경우에 true을 출력하면 되겠다.

function solution(x) { // x = 18
    var sum = 0;
    var arr = String(x).split(""); // [1,8]
    
    for(let i=0; i<arr.length; i++){
        sum += Number(arr[i]) // 1+8
    }
    return (x % sum == 0) ? true:false;
}
  1. 먼저 x를 split()을 사용해 자릿수로 나누어준다.
  2. for문을 돌려 나눈 자릿수들을 더해준다.
  3. x와 더한 값을 나누어 반환되는 나머지를 판별해 조건에 따라 출력한다.

Takeaway

나는 여기서, 삼항연산자를 사용해 조건을 넣어주었다.
복잡한 조건문은 삼항연산자를 사용하기엔 가독성이 떨어진다는 단점이 있지만, 여기에서 간단한 조건문은 오히려 삼항연산자가 가독성이 뛰어난다.

profile
꾸준함, 열정 한 가득 챙겨 끝없는 목표를 향해 달려가는 개발자👩‍💻

0개의 댓글