항해 프로그래머스
(이해中)항해3주차 자바스크립트 프로그래머스 - 자릿수 더하기
완두노예
2023. 1. 30. 19:26

처음 풀이
function solution(n)
{
let arr = n
var answer = 0;
split.n
for(let i=0;, i < n.length;, i++)
return arr.reduce((a,b)=>{
return a+b:
},0)
return answer;
}
//n자리 총합구하는게 reduce였나?
//가우스 법칙 썼던가
//(a,b)=>(a+b) 이건뭐더라
//혹시 n을 쪼개놓아야하나?
//367을 그냥 삼백육십칠로 받아들이는것같음...
//쪼개지면->배열->배열요소끼리 더하기
수정 풀이
function solution(n)
{
var answer = 0;
var m=String(n);
for(var i=0; i<m.length; i++){
answer+=parseInt(m[i]);
}
return answer;
}
Q string을 왜 쓸까 생각해봤는데 숫자를 나누어서 숫자끼리 결합해야되니까 즉, 쪼개지고 배열처리가 가능해서?
A String은 16비트 부호 없는 정수 값 "요소"로 구성된 집합으로, 각각의 요소가 String의 한 자리를 차지합니다.
첫 번째 요소는 인덱스 0에, 그 다음 요소는 인덱스 1, 그 다음은 2, ...입니다. String의 길이는 그 안의 요소 수와 같습니다.
Q parseInt는 왜 쓴걸까 어차피 조건에 자연수랬으니까 당연히 숫자만 들어가는거 아님? 혹시 소수점들어갈까봐?
A parseInt() 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.
parseInt는 정수 값을 반환하기 위해 소수점 이하 값을 잘라냅니다.
다른 풀이
function solution(n)
{
var a = (n + '').split('');
var b = 0;
for(var i = 0; i < a.length; ++i) {
b += parseInt(a[i]);
}
return b;
//return n.toString().split('').reduce((a, b) => (a * 1) + (b * 1));
}
function solution(n) {
var arr = n.toString().split('');
var sum = 0;
arr.forEach(element => {
sum += parseInt(element);
});
return sum;
}
function solution(n)
{
var answer = 0;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
String(n).split('').map(data => answer += parseInt(data));
return answer;
}
function solution(n)
{
var answer = 0;
n = "" + n;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
for(var i = 0 ; i < n.length ; i ++){
answer += n.charAt(i) * 1;
}
return answer;
}
var solution = n => String(n).split('').reduce((a,c)=>a+c*1, 0);
function solution(n)
{
var answer = 0;
var m=String(n);
for(var i=0; i<m.length; i++){
answer+=parseInt(m[i]);
}
return answer;
}
function solution(n)
{
var answer = 0;
var list = n.toString().split('');
answer = list.reduce((prev, curr) => {
return +prev + +curr
}, answer)
return answer;
}
function solution(n)
{
var answer = 0;
var str = n+'';
var len = str.length;
while(len>0) {
answer += parseInt(n/Math.pow(10, len-1));
n = n % Math.pow(10, len-1);
if(n<10) {
answer += n;
break;
}
str = n+'';
len = str.length;
}
return answer;
}
function solution(n)
{
var answer = 0;
n.toString().split('').forEach(function(i){ answer += parseInt(i) });
return answer;
}
function solution(n)
{
return n.toString().split('').reduce(function(i,j) { return parseInt(i) + parseInt(j) }, 0);
}