3일차 → 자릿수 더하기(toString(), split(), parseInt(), forEach(), reduce())
본문 바로가기
항해 중/2주차 알고리즘(프로그래머스)

3일차 → 자릿수 더하기(toString(), split(), parseInt(), forEach(), reduce())

by 은돌1113 2021. 11. 10.

문제설명

자연서 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 함수

예를 들어 N = 123이면 1+2+3 = 6을 return 하면 됩니다.

 

제한사항

- N의 범위 : 100,000,000 이하의 자연수

 

내가 푼 문제 풀이

function solution(n){
    
  var answer = 0;
  let num = n+''

  for(let i = 0; i<num.length; i++){
    answer += parseInt(num[i])
  }

  return answer;
}

첫번째 방법은 n을 숫자 -> 문자열로 변환한 후 for문을 돌려서 num의 index 값을 parseInt()를 사용하여 숫자 타입으로 바꾼 후 answer에 더한다.

function solution(n){
    
  var answer = 0;
  
  let num = (n+'').split('')
  num.forEach(item=>{answer+=parseInt(item)})

  return answer;
}

두번째 방법은 n을 문자열로 바꾼 후 배열로 만든다 -> forEach() 함수를 사용해서 answer에 item의 값을 더한다. 이때 parseInt()를 사용해서 숫자 타입으로 바꿔 준 후 더한다.

 

다른 사람이 푼 문제 풀이

function solution(n){
    
  return (n+"").split("").reduce((total, item) => total + parseInt(item), 0)
}

reduce() 함수를 사용해서 총합과 요소의 변수를 정해주고 총합의 초깃값은 0으로 설정한다.

실행 코드 블록에서 item을 숫자 타입으로 바꿔주고 total에 더해주는 작업을 반복해서 return 값으로는 하나의 값을 반환한다.

 

https://programmers.co.kr/learn/courses/30/lessons/12931

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr

 

댓글