본문 바로가기
Algorithm

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

by Baest 2021. 11. 10.

[링크]

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

 

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

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

programmers.co.kr

 

[문제설명 및 입출력 예]

 

[내가 제출한 코드 및 풀이]

💯 if-else 사용한 코드

 

function solution(x) {
    let numbers = x.toString().split('');          // x를 문자로 형변환 후 자리수로 split 
    let sum = 0;                                   // 자리수의 합계를 담는 변수 
    
    for(let i=0; i<numbers.length; i++){           // numbers 길이만큼 반복 
        sum += parseInt(numbers[i])                // numbers[i] -> 각 자리수 값을 정수형으로 변환 후 더하기 연산 
    } 
    if(x % sum === 0) {                            // x를 sum으로 나눠서 나누어 떨어질 경우                     
        return true;                               // return true     
    }else {                                        // x를 sum으로 나눠서 나누어 떨어지지 않을 경우  
        return false;                              // reutnr false 
    }
}

 

💯 삼항연산자 사용한 코드

 

function solution(x) {
    let numbers = x.toString().split('');          // x를 문자로 형변환 후 자리수로 split 
    let sum = 0;                                   // 자리수의 합계를 담는 변수 
    let result = 0;                                // return 할 결과 담는 값 
    
    for(let i=0; i<numbers.length; i++){           // numbers 길이만큼 반복 
        sum += parseInt(numbers[i])                // numbers[i] -> 각 자리수 값을 정수형으로 변환 후 더하기 연산 
    } 
    x % sum === 0 ? result = true : result = false // x를 sum으로 나눠서 나누어 떨어지면 true, 아니면 false return 
    
    return result;
}

 

 

 

[다른 사람의 코드]

💡 Array 메서드인 reduce 사용한 코드

function Harshad(n){
  return !(n%(n+'').split('').reduce(function (i, sum) {return +sum + +i;}));
}

 

💡 reduce 와 화살표 함수 사용한 코드

function solution(x) {
    var answer = true;    
    var n = String(x).split('').reduce((a, b) => Number(a) + Number(b));
    
    answer = x % n == 0 ? true : false;
    
    return answer;
}