250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

devlog_owen

[프로그래머스] 하샤드수 본문

algorithm/(js)프로그래머스

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

developer_owen 2023. 10. 31. 18:48
728x90

 

에...?하샤드수...? 내가 아는 수는 박명수, 활명수, 무리수...

암튼 정수의 모든 자릿수를 다 더하려면 각 자릿수를 분리해야겠다는 생각이 먼저 들었다. 그러다 toString이라는 메서드를 알게 되었다. 말그대로 숫자를 문자열로 바꿔주는 메서드다. 이걸 알아내고 문제풀이에 돌입했다.

 

 

나의 풀이

function solution(x) {
   let sum = 0
   const n = x.toString()
   
   for (i=0; i<n.length; i++){
       sum += parseInt(n[i])
   }
    return x % sum === 0
   
}

사실 아직도 let, const의 개념이 헷갈린다. 처음에는 상단의 변수선언을 두개다 const로 했었다, 그런데 오류가 나서 혹시 하고 sum을 let으로 바꾸니까 해결됐다. 아마 sum을 선언했는데 밑에있는 sum을 다시 선언해서 오류가 난 것 같다.

 


 

다른 사람의 풀이

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

사실 처음 보고 삼항연산자다 이것 말고는 잘 모르겠어서 가지고 왔다. 

...x.toString() 은 문자열로 변환한 x를 배열에 집어넣는다. 그다음 join("+")으로 배열 안의 문자요소들을 다 더하는 식을 완성한다. 그다음 eval()을 통해 js 코드로 문자요소들을 다 더하는 식을 계산하게 한다. 

삼항연산자, eval(), join() 기억하기...


 

 

728x90