728x90

문제


https://programmers.co.kr/learn/courses/30/lessons/12947

 

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

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

programmers.co.kr

 

코드


function solution(x) {
    let sum = 0;
    x = String(x).split(""); //숫자 x를 단위 하나씩 배열화
    for (let i of x) {
        i = parseInt(i); //배열에 들어가있는 수는 문자이니 정수화
        sum += i;
    }
    return (parseInt(x.join("")) % sum === 0) ? true : false;
}

 

후기


  • 처음에 parseInt() 대신에 Number()를 사용했는데, 오류가 나길래 두 함수의 차이점에 대해 알아보았다
  • Num(), parseInt() : 문자열을 숫자로 형변환 해주는 함수
  • 공통점 : 둘 다 숫자로 구성된 문자열을 number타입의 숫자로 형변환 해준다
  • 차이점
    • Number() : 문자열에 숫자 외의 문자가 껴 있으면 NaN을 반환
    • parseInt() : 문자열에 숫자 외의 문자가 있어도 숫자까지만 인식하고 형변환 해준다 (하지만, 숫자 외의 문자로 문자열이 시작된다면 마찬가지로 NaN을 반환)

+ Recent posts