프로그래머스 문제를 풀다가 알게된 게 생겼다.
자연수 N
이 주어지면, N
의 각 자릿수의 합을 구해서 return
하는 solution
함수를 만들어 주세요.
예를들어 N = 123
이면 1 + 2 + 3 = 6
을 return
하면 됩니다.
제한사항
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가 활용되는 것 같다.