Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 내장 함수 없이 숫자를 문자열로 변환하는 방법


문제

JavaScript에서 내장 함수인 String()이나 toString()을 사용하지 않고, 명시적인 문자열 연결도 활용하지 않은 채 숫자 n을 받아 해당하는 문자열로 변환하는 함수를 작성해야 합니다.

접근 방식

핵심 아이디어는 다음과 같습니다.

1. 나머지 연산자(%)를 사용해 숫자의 일의 자리 값을 추출합니다.
2. 추출한 숫자를 결과 문자열에 더합니다. 이때 문자열과 숫자를 더하면 JavaScript가 자동으로 형 변환(type coercion)을 수행하여 두 값이 이어지게 되므로, 별도의 변환 함수 호출 없이 문자열화가 가능합니다.
3. Math.floor()로 숫자를 10으로 나눈 몫을 구해 마지막 자리를 제거합니다.
4. 숫자가 0이 될 때까지 위 과정을 반복한 뒤 결과를 반환합니다.

예제 코드

다음은 위 로직을 구현한 코드입니다 −

const num = 235456;
const convertToString = (num) => {
   let res = '';
   while(num){
      res = (num % 10) + res;
      num = Math.floor(num / 10);
   };
   return res;
};
console.log(convertToString(num));

출력

콘솔 실행 결과는 다음과 같습니다 −

235456

동작 원리 정리

입력값 235456의 경우, 첫 번째 반복에서 235456 % 10으로 일의 자리 6을 얻고, Math.floor(235456 / 10)으로 23545가 됩니다. 이 과정을 숫자가 0이 될 때까지 반복하면 각 자릿수가 차례대로 문자열 앞에 추가되어 최종적으로 '235456'이라는 문자열이 완성됩니다. 음수나 소수점 처리가 필요하다면 부호 검사 및 소수부 분리 로직을 추가로 구현하면 확장할 수 있습니다.