본문 바로가기
실천하기/코딩테스트

[220108] Lv.1 / 하샤드의 수

by 한코코 2022. 1. 8.

문제 사이트 : https://programmers.co.kr/learn/courses/30/lessons/12947

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

 

 


내 풀이

let num=10;

function solution(num){   
  let arr = new String(num);
  let len=arr.length;
  let sum=0;
  let answer=true;
  for(let i=0; i<len; i++){
  	sum+=Number(arr.substring(i,i+1)) 
  }

	if((num%sum)==0){answer=true}
	else{answer=false}

	return answer
}

 


do while을 쓴 풀이

이런 식을 쓰고 싶었는데 방법을 몰라서 포기한 풀이를 누군가 올려놨길래 가져옴. do while이라는 걸로 사용하면 되는구나.

마지막을 boolean 값으로 반환하는걸 저렇게 간단하게 선언할 수 있다는것을 처음 알았다.

프로그래머스를 보면 다른 사람들의 풀이랑 그 풀이에 대한 사람들의 피드백이 적혀있는게 도움이 많이 된다.

function solution(x){
	let num=x;
    let sum=0;
    
    do{
    	sum+=x%10;
        x=Math.floor(x/10); //계산 결과를 버림처리 한다
       }while(x>0);
       
       return !(num%sum) //나머지가 0일경우 true를 반환, 아닐 경우 false를 반환
}

 

댓글