Programmers 프로그래머스 코딩테스트 연습 - 자릿수 더하기 (JavaScript)
Programmers(프로그래머스)의 코딩테스트 연습문제 Level 1 중,
자릿수 더하기 문제를 JavaScript로 해결해 보도록 하겠습니다.
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
입출력 예
n | answer |
123 | 6 |
987 | 24 |
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
작성한 답
solution.js
function solution(n) {
return String(n).split("").reduce((acc, val) => acc + parseInt(val), 0);
}
설명
자연수 n이 주어지면, n의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만드는 문제입니다.
예시와 같이 n = 123이면 첫번째 자릿수인 1, 두번째 자릿수인 2, 세번째 자릿수인 3을 더한 1 + 2 + 3 = 6을 return 해주는 문제입니다.
이것이 문제의 전부입니다. 문제에서 말하는 것 그대로 코드를 작성하기만 하면 되는 문제입니다.
n이 123일 때를 예시로 들어보겠습니다.
자연수 n의 각 자릿수의 합을 구하라고 하니 각 자릿수를 먼저 구해야 되겠죠?
그러기 위해 먼저 자연수 n을 String() 을 사용하여 string 값으로 변환해 줍니다.
그리고 string으로 변환된 값을 split("")을 사용해 한 글자씩 잘라줍니다. 그럼 벌써 각 자릿수를 담은 배열 ["1", "2", "3"] 이 나옵니다.
그럼 각 자릿수를 담은 배열을 reduce()함수를 사용하여 각 자리수를 더해줍니다.
reduce() 함수를 사용할 때 두번째 parameter로 0 을 넣어 0을 초기값으로 잡고,
첫번째 parameter에 들어가는 function에 첫번째 parameter인 acc는 누적값, 두번째 parameter인 val는 루프에서의 현재값을 말하는데 루프로 돌아가는 현재 값에는 "1", "2", "3" 으로 string 값이 나타나므로 이를 integer 값으로 변경해서 누적값에 더하기 위해 parseInt()를 사용하여 integer값으로 변경 후 누적값에 더해줍니다.
그럼 모든 자릿수가 더해진 값을 구할 수 있습니다.
그리고 모든 자릿수가 더해진 값을 그대로 반환 시켜주시면 됩니다.
(reduce 부분에서 설명이 너무 이상한데 추후에 reduce 에 대해 자세히 설명드릴 수 있도록 하겠습니다.)
아래의 코드는 장황한 글보다 작성한 답의 한줄의 코드를 세부적으로 나눠서 작성한 코드를 보시는 것이 더 한눈에 잘 들어오고 이해가 빠르실 것 같아 작성한 코드입니다.
function solution(n) {
console.log(n); // n = 123
n = String(n);
console.log(n); // n = "123"
n = n.split("");
console.log(n); // n = ["1", "2", "3"]
n = n.reduce((acc, val) => acc + parseInt(val), 0);
console.log(n); // n = 6
return n;
}
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
Programmers 프로그래머스 코딩테스트 연습 - 행렬의 덧셈 (JavaScript) (0) | 2020.08.26 |
---|---|
Programmers 프로그래머스 코딩테스트 연습 - 직사각형 별찍기(JavaScript) (0) | 2020.08.25 |
Programmers 프로그래머스 코딩테스트 연습 - 정수 제곱근 판별 (JavaScript) (0) | 2020.08.21 |
Programmers 프로그래머스 코딩테스트 연습 - 이상한 문자 만들기 (JavaScript) (0) | 2020.08.20 |
Programmers 프로그래머스 코딩테스트 연습 - 서울에서 김서방 찾기 (JavaScript) (0) | 2020.08.19 |
댓글