본문 바로가기
알고리즘

[Programmars] 하샤드 수 (JavaScript)

by 프린벼르 2022. 2. 3.

하샤드 수 문제

1. 나의 생각 흐름

우선 숫자가 두 자리 이상의 경우를 대비해서, 배열로 만들어서 원소 하나하나로 나누어야겠다고 생각했다. 그 후에 그 숫자의 합을 처음 받은 숫자와 나누어 떨어지면 true가 리턴될 수 있게 만들어야겠다고 생각했다.

2. 내 코드 정리

function solution(x) {
    let answer = true;
    let sum = 0;
    let arr = (x + '').split('').map(Number);
    for(let x of arr){
        sum += x;
    }
    if (x % sum !== 0) {answer = false;}
    return answer;
}

그렇게 완성된 나의 코드!! 여기서도 예전 문제풀이에 자주 사용되었던 문법이 보인다. 역시 문제가 달라도 그 유형이 비슷해서 예전에 썼던 풀이를 이용해서 풀 수 있는 것 같다.

숫자를 문자로 변환 후 배열로 만들기 ( split이용 ) 

   - 타입이 숫자(number)인 경우 split을 사용할 수 없기 때문에 숫자에 ''을 더해 문자로 만들어주고, split('')을 사용하여 배열로        만들어 주는 방법이다.     --------->.    (n +'').split('')
※  .map(Number)를 사용해서 한번에 바로 숫자형을 배열에 담을 수 있다

3. 다른 사람들의 코드

function solution(x) {
    return x%eval([...x.toString()].join("+")) ? false : true;
}

정말 깔끔하게 삼항연산법으로 return해주었다. 그런데 저 안의 대괄호 부분과 eval에 대해서는 추가적으로 공부해야할 것 같다.

4. 결론

자주 쓰이는 문법은 이제 좀 익숙하니까 외워질때가 된것 같은데.. 이제는 다른 방법을 이용해서 풀어 봐야겠다.

댓글