글 작성자: 망고좋아
반응형

🎯 하샤드 수

📁 문제 출처

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

 

💡 생각

  • 입력받은 x를 문자열로 변환 -> 하나씩 잘라줘서 다시 숫자로 변환해서 배열에 저장
  • 저장한 배열을 reduce로 더해주기

 

🛠 나의 코드

function solution(x) {
    let answer = true;

    let tempArr = []
    let num = String(x)

    for(let i = 0; i < num.length; i++) {
        tempArr.push(Number(num[i]));
    }

    let sum = tempArr.reduce((a, b) => (a + b))

    if (!(x % sum === 0)) {
        answer = false;
    }

    return answer;
}

 

다른 풀이

function solution(x) {
    let answer = true;

    let arr = String(x).split('');

    let sum = 0
    for(let i = 0; i < arr.length; i++) {
        sum += Number(arr[i]);
    }

    if (!(x % sum === 0)) {
        answer = false;
    }

    return answer;
}
  • String(x).split('');을 사용하면 한 번에 문자열을 잘라서 배열에 저장할 수 있다.
반응형