문제
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'이라는 문자열이 완성됩니다. 음수나 소수점 처리가 필요하다면 부호 검사 및 소수부 분리 로직을 추가로 구현하면 확장할 수 있습니다.