[프로그래머스]Lv.1 하샤드 수 - JavaScript

롱롱·2022년 9월 6일
0

문제설명

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


제한조건

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

입출력 예

arrreturn
10true
12true
11false
13false

나의 풀이

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

정수 x를 index를 통해 접근하기 위해 배열로 변환시키고 sum이라는 변수를 선언해 각 index마다 정수로 변환시켜 더해주었다. 그 후 x를 sum으로 나누어 0으로 나누어 떨어지면 true, 그렇지 않으면 false를 출력하게끔 했다.

공부를 시작한지 얼마 안되고 풀었던 문제였는데 포스팅을 위해 다시 보니 너무 비효율적인것 같다. index 접근은 문자열도 가능하니 배열로 만들필요가 없었고, 또 출력해야하는 답이 boolean형이었기 때문에 굳이 answer 변수를 만들어 값을 넣어 줄 필요가 없었다.

function solution(x) {
    let str = x.toString() 
    let sum = 0
    for (let i = 0 ; i < str.length ; i++) {
        sum += parseInt(str[i]);
    }
    return (x % sum == 0)
}
profile
개발자를 꿈꾸며 공부중입니다.

0개의 댓글