728x90
🔥 Programmers Lv.1 : 자릿수 더하기
🔍 문제 : " 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. "
📎 조건 :
∙ N의 범위 : 100,000,000 이하의 자연수
∙ N의 범위 : 100,000,000 이하의 자연수
👉🏻 My answer
function solution(n){
let sum = 0;
let answer=String(n).split("");
for(let i=0; i<answer.length; i++){
let num = parseInt(answer[i]);
sum += num;
}
return sum;
}
solution(123);
01. n인 123을 먼저 한 개씩으로 나눠주기 위해 문자열로 바꿔 split메서드를 이용하여 한 자릿 수로 나누어 주었습니다.
02. 한 자릿 수로 나눈 answer는 ["1", "2", "3"]이 상태이며 인덱스별 값 "1", "2", "3"을 1,2,3과 같이 숫자로 변환하기 위해 parseInt()를 사용하였습니다.
03. 숫자로 바뀐 값의 총합(sum)을 구해 sum을 리턴해주면 자릿수를 더한 값의 결과를 도출할 수 있습니다.
02. 한 자릿 수로 나눈 answer는 ["1", "2", "3"]이 상태이며 인덱스별 값 "1", "2", "3"을 1,2,3과 같이 숫자로 변환하기 위해 parseInt()를 사용하였습니다.
03. 숫자로 바뀐 값의 총합(sum)을 구해 sum을 리턴해주면 자릿수를 더한 값의 결과를 도출할 수 있습니다.
👉🏻 Another ways
function solution(n){
// 쉬운방법
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
: reduce의 initial value는 첫 acc 값입니다. 즉, 0을 넣어서 acc 초기값을 정수화 해주는 겁니다("문자열 + 정수 = 문자열" 방지차원). initial value를 지정하지 않는다면 parseInt(acc) + parseInt(curr)로 하면 될 것 같습니다.
: n+""은 숫자 + 문자열의 형태이기 때문에 결과적으로 문자열 n을 반환합니다. = String(n)
: n+""은 숫자 + 문자열의 형태이기 때문에 결과적으로 문자열 n을 반환합니다. = String(n)
function solution(n) {
var arr = n.toString().split('');
var sum = 0;
arr.forEach(element => {
sum += parseInt(element);
});
return sum;
}
: forEach문을 이용해서 더욱 간결하게 표현해주었습니다.
'알고리즘 도장깨기' 카테고리의 다른 글
프로그래머스 Lv.1 "서울에서 김서방 찾기" (3) | 2022.11.02 |
---|---|
프로그래머스 Lv.1 "자연수 뒤집어 배열로 만들기" (3) | 2022.11.01 |
프로그래머스 Lv.1 "약수의 합" (2) | 2022.10.30 |
프로그래머스 Lv.1 "나머지가 1이 되는 수 찾기" (2) | 2022.10.30 |
프로그래머스 Lv.1 "평균 구하기" (2) | 2022.10.30 |
댓글