프로그래머스
cs

%10 해서 나눠야겠다.
내가 만든 풀이
function solution(x) {
var answer = true;
const length = x.toString().length
let num = 0;
let digitNow = x;
for (let i = 0 ; i < length ; i++){
num += digitNow%10
digitNow = Math.floor(digitNow/10)
}
if (x%num !== 0){
answer = false
}
return answer;
}
다른 사람의 풀이1
function Harshad(n){
var result ;
var sum = 0;
var arr = String(n).split('');
for(var i=0; i<arr.length; i++) {
sum += Number(arr[i]);
}
return n % sum == 0 ? true : false;
}
// 런타임 에러로 아래와 같이 수정
function solution(x) {
var result = true ;
var sum = 0;
var arr = String(x).split('');
for(var i=0; i<arr.length; i++) {
sum += Number(arr[i]);
}
if (x%sum !== 0){
result = false
}
return result
}
다른 사람의 풀이2
function solution(x) {
return x%eval([...x.toString()].join("+")) ? false : true;
}
eval을 이용해서 각각의 문자열을 +가 포함된 수식으로 바꾸었다.
숫자 자체를 배열로 바꾸는 방법이 유용해보이니 익혀놔야겠다.
실제 속도 차이가 있을 수 있으니 확인해보기로한다.
나의 풀이 : 0.04 ms
다른사람1 : 0.044 ms
다른사람2 : 0.05 ms
내 풀이와 다른사람2의 풀이는 하나빼고는 속도가 같게 나왔는데 다른사람 1의 경우 속도가 오락가락했다.
형변환같은걸 최소화하는 쪽이 코드는 더 길더라도 보기도 편하고 실제 속도도 빠른듯하다.