2023 09 19 TIL

김민준·2023년 9월 19일

코드테스트

목록 보기
3/37

프로그래머스
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의 경우 속도가 오락가락했다.

형변환같은걸 최소화하는 쪽이 코드는 더 길더라도 보기도 편하고 실제 속도도 빠른듯하다.

profile
node 개발자

0개의 댓글