본문 바로가기
JAVASCRIPT/코딩테스트

프로그래머스 레벨 1 - 하샤드 수 정답 및 풀이[자바스크립트]

by 진짠 2023. 7. 6.
728x90

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

주어진 정수가 하샤드 수 인지 아닌지를 true, false로 return 시키는 문제.

 

하샤드 수란, 정수 x가 정수 x의 자릿수 합으로 나누어 떨어지는 수이다.

(ex- 18은 1+8=9로 나누어 떨어지는 수 이므로 하샤드 수임)

 

문제에 어떻게 하면 될지가 너무 잘 나와있어서 그렇게 어려운 문제는 아니라고 생각한다. 주어진 자연수의 각 자리수 합을 구하고 그것이 자연수와 나누어 떨어질 경우 true, 아니면 false를 리턴하면 되니까.

 

제한조건

x는 1 이상, 1000이하의 정수. 신경써서 코딩하지 않았다. 일반 for문을 돌려도 성능 이슈가 없으니 딱히 문제될 것은 없었다.

 

function solution(x) {
//주어진 자연수를 각각 나누어 배열로 저장한다.
    var answer = x.toString().split(""); 
    let num = 0;
    for(let i=0;i<answer.length;i++) {
    //각 자리수를 더한 값을 변수 num에 저장한다.
      num += parseInt(answer[i]);   
    }
    //x와 num 나머지가 0이면 true 아니면 false
    return x%num == 0 ? true : false; 
}

answer을 string 형태로 바꾸어 각각의 수를 배열로 집어넣었다. 그리고 값을 더할때는 parseInt() 메소드를 이용하여 int로 변환시킨 뒤 값을 더했다.

 

그리고 return은 삼항연산자를 사용하였다.

 

다른 사람의 풀이

for문 대신에 do, while 문을 사용해도 된다.

 

그리고 return 식은 이미 true, false형태로 반환하기 때문에 굳이 삼항연산자를 하지 않아도 된다는 것을 댓글을 통해 알았다.

728x90

댓글