Algorithm

Algorithm :: 프로그래머스 문제풀기 -12

hooti 2020. 10. 29. 00:45

하샤드 수

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

 

제한사항 : x는 1 이상, 10000 이하인 정수입니다.

 

 


 

 

이번에는 삼항연산자를 쓸 수 있다면 무조건 응용한다! 라는 생각으로 진행하였다. 접근방식은 아래와 같다.

 

1. x와 비교할 누적값 구하기

2. 누적값을 구하기 위해 숫자를 잘라 값을 누적하며 더하기

3. 누적값과 x를 비교했을때 나머지가 0이면 참, 아니라면 거짓을 반환하기

function solution(x) {
    var answer = true;    
    let num = String(x).split('').reduce((acc, cur) => Number(acc) + Number(cur));
    
    answer = x % num === 0 ? true : false;
    
    return answer;
}

누적값 구할때는 reduce를 구하면 참 편하다. 이번에는 잊지않고 삼항연산자를 사용했다! 그래도 이번엔 코드가 짧고 간결해서 보기 좋다. 뿌듯!

 

 

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges