squareDigits.js (7kyu 13)

Codewars 알고리즘 풀이


Problem

  • In this kata, you are asked to square every digit of number.
    • 각 숫자를 제곱해서 나열한다.


Solution 01

function squareDigits(n) {
  let str = n.toString();
  let result = [];
  
  for (let i = 0; i < str.length; i++) {
    result.push(str[i] * str[i]);
  }
  return Number(result.join(''));
}

squareDigits(1234);  // 14916
squareDigits(5678);  // 25364964

toString(): 숫자를 문자열로 변환한다.

push(): 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.

Number(): 객체 인수를 숫자로 변환한다. 숫자로 변환할 수 없으면 NaN을 반환한다.

join(): 배열의 모든 element를 결합하고, 새 문자열로 반환한다.


Solution 02

function squareDigits(n) {
  return Number(n.toString().split('').map(i => i * i).join(''));
}

squareDigits(1234);  // 14916
squareDigits(5678);  // 25364964

split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.

map(): 배열 내 모든 element에 대해, 호출한 함수의 결과를 모아 새 배열로 반환한다.


Solution 03

function squareDigits(n) {
  return parseInt(n.toString().split('').map(i => i * i).join(''));
}

squareDigits(1234);  // 14916
squareDigits(5678);  // 25364964

parseInt(): 문자열을 구문 분석하고, 정수를 반환한다.


Solution 04

function squareDigits(n) {
  return +n.toString().split('').map(i => i * i).join('');
}

squareDigits(1234);  // 14916
squareDigits(5678);  // 25364964