강백호같은개발자

각자리수 곱셈 JavaScript 본문

- 뜨거운 코드를 가르며

각자리수 곱셈 JavaScript

쨜리 2020. 6. 1. 22:18

두 양의 정수가 주어졌을 때, 

주어진 수의 각 자리의 숫자를 곱했을 때

한자릿수가 될 때까지의 계산 횟수를 반환하는 함수를 작성하시오.

 

pseudo-code(의사코드)

1. 한자릿수로 만드는 형태는 리듀스를 이용해보면 어떨까?

2. 리듀스 매소드를 이용하기 위해서, 주어진 숫자를 배열로 바꿔보면 어떨까?

3. 숫자를 String()을 사용하여 문자열로 변환한 다음, split('')을 이용해서 배열로 변환하면 어떨까?

4. 문자열의 길이나 배열의 길이를 .length를 이용해서 2자리 수 이상의 경우 반복하는 반복문을 사용하면 어떨까?

5. 반복문이 종료될 때 count를 하는 변수를 선언하여 몇번 반복했는지 카운트하면 어떨까?

 

위와같은 코드를 짜보았다.

function multiple(num){
  let count = 0;
  num = String(num);
  while(num.length >= 2){
    count = count + 1;
    num = String(num.split('').reduce(function(acc, cur){
	  return acc * cur;
    })); 
  }

  return count;
}

어려운 부분은 while문 안에서 리턴되어 할당된 num의 값이 '숫자'였다는 것이다.

반복되는 while문은 문자열의 길이를 조건문으로 잡고 있는데,

이것이 숫자로 들어가버리면 false 값이 되면서 while문을 탈출해버린다.

 

debugger을 통해서 겨우 관찰해낼 수 있었다.

반복문은 혹여나 재할당되는 값의 타입이 변경되지 않는지,

특히 number타입과 string타입이 왔다갔다 하는 경우 잘 살펴봐야겠다.

 

 


다양한 자료와 글을 참고하여 배우고 있는 개발 뉴비의 블로그입니다. 
수정 보완할 것이 있다면 부담없이 댓글 남겨주세요 :)

각자리수 JavaScript

Comments