[TIL] String(n)안쓰고 문자열 변환하기

hanbyul.choi·2023년 5월 23일
0

[TIL]

목록 보기
6/39

프로그래머스 문제를 풀다가 알게된 게 생겼다.

[문제]

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6return 하면 됩니다.

제한사항
N의 범위 : 100,000,000 이하의 자연수


내 코드

function solution(n)
{
    const newN = String(n)        
        let answer = 0;
        for(let i = 0; i< newN.length; i++){
            answer += Number(newN.substring(i,i+1))
        }
    return answer
}

다른 코드

function solution(n){
    // 간단한 방법
    return (n+"").split("").reduce((acc, curr) 
    => acc + parseInt(curr), 0)
}

코드 설명

프로그래머스 답안 제출 후 다른사람의 코드를 보니 +하나로 문자열이 변환되었다. 아래는 관련해서 찾아본 내용이다.

"자바스크립트에서 덧셈 연산자+를 사용할 때, 피연산자 중 어느 하나가 문자열이면 문자열이 아닌 다른 피연산자도 문자열로 타입이 변환되어 문자열을 합친 값이 반환됩니다. "

위의 예시에서 n+""숫자 + 문자열의 형태이기 때문에 결과적으로 문자열 n을 반환하게 된다.

참고로 ""은 빈문자열이기 때문에 연결해도 반환값에 영향을 주지 않는다.
그저 다른 피연산자를 문자열로 형변환하는 역할을 합니다. 따라서 String(n)과 동일하게 사용할 수 있습니다.


문제하나 풀때마다 필요한 JS에 내장된 메서드를 찾아서 활용중인데
JS만의 편리한 기본 변환 기능 덕분에 코드가 간결해 질수도 있다.

그러나 내 입장에서 보면 간결하지만, 이해하는데에는 시간이 소요된다.
직관적이지 못한 부분이 있는 것 같다.

그리고 이러한 형변환이 의도하지 않을 때에도 될 수 있을 것 같다라는 생각이 든다. 이런 부분 때문에 TypeScript가 활용되는 것 같다.

0개의 댓글