[프로그래머스 JavaScript] 자릿수 더하기 (toString() vs String())

옹잉·2023년 11월 28일

문제

막혔던 점

각 자릿수를 더하기 위해 10으로 나눠서 계산하는 방법으로 풀었는데, 문자열로 변환해서 푸는 방법도 있어 두 가지 다 풀어보았다.

  1. 문자열로 변환하기 위해서는 .toStirng() 또는 String()을 쓸 수 있는데 이 두가지의 차이점이 궁금해서 아래에 정리해놓았다.

  2. 문자열로 변환 후 덧셈을 하려는데

let answer = num.reduce((acc,cur) => {
        return acc + cur;
    },0)

이렇게 식을 쓰니까 n=123일 때 실행한 결과값이 "0123"이 되었다.
문자로 인식해 덧셈을 하면 옆으로 붙게 되어서 숫자 처리를 해주기 위해return acc + (cur*1)로 수정했다. (parseInt(cur), Number(cur)로도 숫자 처리 가능)

풀이

문자열로 변환하지 않은 풀이

const solution = (n) => {
    let answer = 0;
    while(n>0) {
        mod = n%10;
        n = Math.floor(n/10);
        answer += mod;
    }
    return answer;
}

문자열 변환 풀이

const solution = (n) => {
    let num = String(n).split('');
    let answer = num.reduce((acc,cur) => {
        return acc + (cur*1);
    },0)
    return answer;
}

더 줄여서 쓰면

const solution = (n) => {
    return String(n).split('').reduce((acc,cur) => acc + (cur*1),0);
}

String() vs .toString()

차이점

String()

String(thing);

매개변수 thing : 문자열로 변환할 아무 값

.toString()

obj.toString();

우선 표기법에서 차이가 나고, 두 가지 방법 중 다음과 같은 이유로 String()을 사용하는 걸 권장한다.

.toString()은 진법 변환이 필요한 경우 사용할 수 있다.

num.toString(radix)
let baseTenInt = 10;
console.log(baseTenInt.toString(2));
// "1010"이 출력됩니다

let bigNum = BigInt(20);
console.log(bigNum.toString(2));
// "10100"이 출력됩니다

.toSgring() 사용 시 주의 사항

참고

profile
틀리더라도 🌸🌈🌷예쁘게 지적해주세요💕❣️

0개의 댓글