자릿수 더하기
설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution
함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면
제한 사항
N의 범위 : 100,000,000 이하의 자연수
N | answer |
---|---|
123 | 6 |
987 | 24 |
정답 풀이
function solution(n) {
let x = 0;
n.toString().split("").map(e=>(
x += Number(e)
))
return x
}
해설
이번 문제는 숫자의 자릿 수의 합을 더해주는 문제 입니다. n으로
들어오는 매개변수를 우선 toString메소드를 사용하여 문자열로
변환합니다. 그리고 split 메소드를 사용해 자릿수를 개별문자열로
쪼개주고 map 메소드를 사용해 반복문을 사용해 새로운 배열로 만들어
주도록 합니다. 만들어 주었다면 Number메소드를 사용해서 문자열을
정수로 변환하여 x에 중첩해서 더합니다.
원래는 reduce를 사용하려고 했었는데 아직도 사용법이 미숙해서 부족한 거 같습니다. 다음에는 사용해서 풀어보도록 하겠습니다.
다른사람 풀이
function solution(n){
// 쉬운방법
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
해설
오... reduce로 풀어본 풀이가 있었습니다.
(n+"")은 어떤 뜻이냐면 자바스크립트에서 덧셈 연산자 +를 사용할 때,피연산자 중 어느 하나가 문자열이면 문자열이 아닌 다른 피연산자도
문자열로 타입이 변환되어 문자열을 합친 값이 반환됩니다. 위의 예시에서 n+""은 숫자 + 문자열의 형태이기 때문에 결과적으로 문자열 n을 반환합니다.
참고로 ""은 빈문자열이기 때문에 연결해도 반환값에 영향을 주지 않습니다.
그저 다른 피연산자를 문자열로 형변환하는 역할을 합니다. 따라서 String(n)과 동일하게 사용할 수 있습니다.
결과적으로 n을 문자열로 변환하여 split 메소드를 사용하여 쪼개고
reduce메소드를 사용하는데 여기서 초기값을 무조건 설정해야 합니다.
아무것도 설정하지 않으면 오류가 생기고 curr을 정수처리해서 처리한
문자열을 정수로 바꾸어 중첩헤서 더해주도록 합니다
천잰가?
'프로그래머스' 카테고리의 다른 글
[programmers] 문자열 내 p와 y의 개수 (2) | 2022.11.14 |
---|---|
[programmers] 자연수 뒤집어 배열로 만들기 (2) | 2022.11.14 |
[programmers]나머지가 1이 되는 수 찾기 (1) | 2022.11.09 |
[programmers]서울에서 김서방 찾기 (2) | 2022.11.09 |
[programmers]문자열 다루기 기본 (3) | 2022.11.08 |