728x90
반응형
1. 문제점
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [자릿수 더하기]
2. 시도해본 것들
일반 숫자를 문자열로 만들고, 배열로 만들고, 다시 숫자로 바꿔야하나.....
깔끔하지 않아보이지만 내가 할 수 있는 유일한 방법이란 생각도 들었고
다시 개념정리 하기 위해 사용해보았다.
3. 해결과정
n은 임의의 숫자
// 숫자를 문자열로 변경
const str = String(n);
// 문자열을 배열로 변경
const newArr = Array.from(str)
// 배열값을 숫자로 변경
answer += Number(newArr[i])
4. 알게 된 점
나의 문제풀이
function solution(n) {
var answer = 0;
// 숫자를 문자열로 변경
const str = String(n);
// 문자열을 배열로 변경
const newArr = Array.from(str)
for (i=0; i<newArr.length; i++){
// 배열을 숫자로 변경
answer += Number(newArr[i])
}
return answer
}
타입변경하며 폭풍 노가다..!
남의 문제풀이
function solution(n) {
return n
.toString() //숫자의 문자화
.split("") // 배열화 ["1","2","3","4"]
.reduce((sum, str_num) => sum + Number(str_num), 0);
//reduce함수는 누적시켜가는 내장함수로 생각하자
//sum에 합계로 받을 시작점 0을 넣어준다.
//str_num은 누적시켜갈 숫자를 더해야하는데 문자열 "1" 상태니 숫자화 시킨다
//0에서 시작하여 배열의 내용을 모두 숫자화해서 더하면 끝
}
reduce가 뭔지 몰라서 검색 했을 때 다음과 같은 예시가 나왔다.
const arr1 = [ 1, 2, 3, 4, 5 ];
arr1.reduce((a, b) => a + b); // 15
그런데 마지막에 0은 없어서 팀원에게 질문했더니 acc의 시작값이라고 했다.
첫번째 인자는 일종의 let sum = 0 과 같은 거고,
reduce는 누적시켜주는 함수라고 생각하면 된다고 했다.
현재 문자열을 배열화한 상태로 ["1", "2", "3"[
이런식으로 들어가 있기 때문에 합계부분은 acc는 0 (숫자)
그 뒤 cur에는 "1" , "2" 가 들어가기에 Number로 숫자화해서 더해주면 된다.
728x90
반응형
'일기 > TIL' 카테고리의 다른 글
TIL: Today I Learned 50일차 [개미군단] (0) | 2023.01.20 |
---|---|
TIL: Today I Learned 49일차 [제곱수 판별하기] (0) | 2023.01.19 |
TIL: Today I Learned 47일차 [문자열안에 문자열] (0) | 2023.01.17 |
TIL: Today I Learned 46일차 [배열의 유사도] (0) | 2023.01.16 |
TIL: Today I Learned 45일차 [중앙값 구하기] (0) | 2023.01.13 |