본문 바로가기

알고리즘&코테

[알고리즘] 자릿수에 맞는 숫자 문자열로 출력하기 with JS

코딩 테스트 문제를 풀다가 결과를 출력할 때 두 자릿수이면 '01', '05'와 같이 출력하라는 문제가 나왔습니다. 이처럼 자릿수에 맞춰 0을 추가해서 출력하는 여러 방법입니다.

 

#방법 1

입력된 숫자를 문자열로 변환해 자릿수를 구합니다. 그 후 목표하는 자릿수에서 부족한 만큼 '0'을 repeat()을 통해 반복시켜 추가합니다.

const N = 3; // N은 자릿수를 의미합니다.
function sol(num) {
  let ret = num + '';
  
  if(ret.length < N) {
    return '0'.repeat(N - ret.length) + ret;
  }
  
  return ret;
}

console.log(sol(5)); // 005
console.log(sol(13)); // 013

 

#방법 2

방법 1과 유사한 방법이지만 '0'을 미리 자릿수만큼 반복시켜 추가한 다음 substring()을 통해 원하는 자릿수만큼 잘라낸다는 차이점이 있습니다.

const N = 3; // N은 자릿수를 의미합니다.
function sol(num) {
  const ret = '0'.repeat(N) + num;
  return ret.substring(ret.length - N);
}

console.log(sol(5)); // 005
console.log(sol(13)); // 013

 

#방법 3

방법1, 2와 다르게 JS의 함수 padStart()를 활용하는 방법입니다. 첫 번째 인자로 원하는 자릿수를 넣고, 두 번째 인자에 빈자리를 채울 문자열을 넣어주면 됩니다.

const N = 3; // N은 자릿수를 의미합니다.
function sol(num) {
  return (num+'').padStart(N,'0');
}

console.log(sol(5)); // 005
console.log(sol(13)); // 013

 

기억할 수 있다면 padStart()를 활용하는 것이 좋다고 생각합니다.