문제

 

풀이 코드

function solution(n) {
  let arr = [];
  n = String(n);

  for (let i = 0; i < n.length; i++) {
    arr.push(n[i]);
  }
  return arr.reduce((sum, current) => sum + Number(current), 0);
}

 

풀이 과정

입력받은 n 은 Number 타입이기 때문에 우선 String 타입으로 강제 형변환을 수행했고,

for 문을 돌려 각 인덱스를 배열에 할당했다

 

그리고 해당 배열에 대해 reduce 함수를 이용하여 각 자리수를 더하는 방식으로 수행했다.

 

숫자들을 10으로 나누고 나머지구하고 등등.. 하는거보단 효율적으로 구현했지만 아무리 봐도

 

강제 형변환, for 구문, 문자열을 배열에 저장 등등.. 너무 비효율 적인 부분이 많은거 같아 다른사람의 코드를 보았다

 

다른사람의 풀이

// 다른 사람의 풀이 1
function solution(n){
    return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}

// 다른 사람의 풀이 2
function solution(n){
    return String(n).split('').reduce((a,c)=>a+c*1, 0);
}

split 과 reduce 를 적절히 조합하여 구현했다

 

아.. 어제부터 느끼는데 진짜 JS 의 기초 문법 문자열 함수, 배열 함수 등등을 많이 써보고 공부해 볼 필요가 있다

 

어떤함수 인지 아는데 생각이 안나는건.. 아직 많이 사용 안해봐서 for 문만 쓰게 되는거겠지

더 공부해야겠다

 

+) 문자열을 number로 변환하기 위해서는 문자에 연산을 수행하면 Number로 바뀐다 ( '4' * 1 = 4 )

Number형을 문자열로 변환하려면 빈문자 ''를 더하면 된다 ( 4 + '' = '4' )

 

이것도 중요한 팁이 될수 있다

+ Recent posts