Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- javascript
- 전자계약시스템
- 전자계약솔루션
- 습관
- 온라인계약
- 코딩테스트
- 알고리즘
- 전자계약서비스
- 독후감
- 마케팅
- 좋은습관
- 아이폰
- 독서리뷰
- 갤럭시노트20
- 전자계약
- 모두의사인
- 블록체인
- 아이폰13
- 옥소폴리틱스
- 자바스크립트
- 아주작은습관의힘
- 자릿수더하기
- atomichabits
- 모두싸인마케터
- 전자계약서
- 아이폰12
- 모두싸인마케팅
- 모두사인
- map
- 모두싸인
Archives
- Today
- Total
찰리의 이야기
Javascript 자릿수 더하기 본문
반응형
Javascript 자릿수 더하기
문제 :
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
function solution(n)
{
var answer = 0;
return answer;
}
자연수를 입력해야하는데,
각 자리수를 더해야한다.
결국은 이 부분에서 자연수의 일반적인 형태로 다루는 것이 아니라,
문자열 인덱스로 다루어서 쪼갠다음,
다시 자연수처럼 변환하여 더하는 것을 실행한다고 생각했다.
구현해야할 순서를 적어보았다.
1. 받은 자연수를 문자열로 바꾼다.
2. 문자열 인덱스를 탐색하여 문자열로 쪼갠 다음
3. 다시 자연수로 변환하여 더한다.
function solution(n)
{
let answer = 0;
let stringNum = n.toString();
// 자연수를 문자화하여 stringNum 변수에 할당한다.
return answer;
}
function solution(n)
{
let answer = 0;
let stringNum = n.toString();
// 자연수를 문자화하여 stringNum 변수에 할당한다.
for(let i=0; i<stringNum.length; i++){
answer = answer + parseInt(stringNum[i]);
}
// 문자열 인덱스를 for 반복문으로 탐색하면서
// 하나 하나의 문자열을 parseInt로 숫자로 변경한 다음
// answer 에 더해줍니다.
return answer;
}
여기까지가 제가 구현한 형태이고,
다른 풀이법도 살펴보았다.
가장 간단해 보이는 방법은 reduce 를 사용하는 것이었다.
function solution(n){
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
여기서 자연수에다가 ""를 더하는 것은
Javascript의 형변환 법칙을 사용한 것이다.
Javascript에서는 자연수에 문자열을 더할 경우 자동으로 문자열이 된다.
반대로 문자열에 자연수를 곱하면 자동으로 자연수가 된다.
이때 배열 메서드인 reduce를 사용하기 위해,
문자열을 split으로 문자열 하나하나의 인덱스로 구성된 배열로 변환을 하고,
acc + parseInt(curr) 라는 리듀서 함수를 실행시키는 것이다.
배열로 변환하여, 리듀서 함수를 활용할 생각을 잘 떠올린 것 같다.
배열 요소 하나하나 마다 값을 더하는 작용을 거쳐
하나의 값을 반환하는 경우에는
리듀스를 이용해보자!
오늘의 연습 끝.
Javascript 자릿수 더하기
반응형
'찰리: 코딩 연습' 카테고리의 다른 글
Javascript 하샤드 수 (0) | 2021.09.08 |
---|---|
Javascript 핸드폰 번호 가리기 (0) | 2021.09.01 |
Javascript 행렬의 덧셈 (0) | 2021.09.01 |
Javascript x만큼 간격이 있는 n개의 숫자 (0) | 2021.08.28 |
Javascript 직사각형 별찍기 (0) | 2021.08.27 |
Comments