[알고리즘] 숫자 천단위로 구분하기

do_large·2020년 12월 29일
0

알고리즘

목록 보기
29/50
post-thumbnail

이 문제는 어려운 알고리즘문제는 아닌데,
한번 풀어보고 정리해보고싶어서 적어본다

문제설명
주어진 숫자를 천단위로 구분하는 쉼표를 넣기
단,
입력되는 숫자가 양수, 음수, 소수점을 가진 수 일 수 있다.

참고할 메서드
splice()
배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다.

const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb'); // 새 요소 추가["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May'); // 요소 교체["Jan", "Feb", "March", "April", "May"]

우선..문제를 푸는데 생각보다 시간이 오래걸렸다.
간단한 문제라고 생각했는데 어떻게 풀지 생각하는 시간이 많이걸렸다.

그리고 코드를 이렇게 작성했는데 좋은 코드는 아닌것같다.....ㅜㅠ

아래의 코드는 양수와 음수만 판별해준다.

function makeDot(num) {
  const numType = num > 0 ? true : false;
  num = !numType ? num * -1 : num;
  
  let stringNum = num.toString().split('').reverse();
  const strLength = stringNum.length;
  
  let point = strLength % 3 === 0 ? 3 : strLength % 3;
  for (let i = strLength - point; i > 2; i -= 3) {
    stringNum.splice(i, 0, ',');
  }

  console.log(
    !numType ? '-' + stringNum.reverse().join('') : stringNum.reverse().join('')
  );
}

makeDot(-1234618);

차차개선하겠음..ㅠㅜ


(2020.12.30 수정)

헐...
위에 구현해놓은 것들을 한 줄로 표현할수 있는 메서드를 알게되었다......

toLocaleString()
toLocaleString() 메서드는 배열의 요소를 나타내는 문자열을 반환합니다.
요소는 toLocaleString 메서드를 사용하여 문자열로 변환되고 이 문자열은 locale 고유 문자열(가령 쉼표 “,”)에 의해 분리됩니다.

이 메서드는 좀 더 다양하게 사용될 수 있지만 지금은 숫자에 쉼표 붙이는방식을 적겠당

(123456).toLocaleString();

이게끝이다....ㅎ
마이너스도 적용이 된다, 심지어 소수점을 가진 수도!!
진짜대박이네..

이 문제를 풀면서 여러 메서드를 배울수있어서 좋았다

0개의 댓글