noEndingZeros.js (8kyu 68)

Codewars 알고리즘 풀이


Problem

  • Get rid of numbers ending with zeros.
    • 0으로 끝나는 숫자들을 제거한다.


Solution 01

function noEndingZeros(n) {
  while (n !== 0 && n % 10 === 0) {
    n /= 10;
  }
  return n;
}

noEndingZeros(0);        // 0
noEndingZeros(19880);    // 1988
noEndingZeros(198800);   // 1988
noEndingZeros(1988000);  // 1988


Solution 02

function noEndingZeros(n) {
  return Number(n.toString().replace(/0+$/g, ''));
}

noEndingZeros(0);        // 0
noEndingZeros(19880);    // 1988
noEndingZeros(198800);   // 1988
noEndingZeros(1988000);  // 1988

Number() 메소드

객체의 인수를 숫자로 변환한다.

숫자를 변환할 수 없으면 NaN을 반환한다.

toString() 메소드

숫자를 문자열로 변환한다.


Solution 03

function noEndingZeros(n) {
  return +`${n}`.replace(/0+$/g, '');
}

noEndingZeros(0);        // 0
noEndingZeros(19880);    // 1988
noEndingZeros(198800);   // 1988
noEndingZeros(1988000);  // 1988

정규표현식 (RegExp)

replace(): 대응되는 문자열을 찾아 다른 문자열로 치환한다.

+: 1회 이상 연속으로 반복되는 부분에 대응

$: 입력의 끝 부분에 대응

g: 전역 검색