본문 바로가기
개발/알고리즘

[프로그래머스][LEVEL1] 자릿수 더하기

by ISA(류) 2021. 8. 19.

# 문제 원문

 

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

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

입출력 예

N / answer

123 6
987 24

 

# 문제 풀이

입력 받은 정수 n의 각 10의 배수 자리마다의 수를 쪼개서 합한후 그 합을 반환하는 문제이다.

간단히 푸는 방법으로는 문자열로 변환후 각 자릿수를 합해주는 방법이 있고, 형변환 없이 푸는 방법으로는 입력 받은 정수 n 을 10으로 나눈 나머지를 계속 더해주면서 n - 나머지 / 10으로 n이 0이 될때까지 반복한 후 얻어진 결과를 반환하면 된다. JS 기준으로 코드가 깔끔하기로는 문자열로 변환후 처리하는게 깔끔하고, 성능은 당연히 숫자 그대로 연산으로 처리하는게 빠르다.

# 솔루션 플로우

1. 입력 받은 n의 1의 자리를 구해서 합해준다.

2. 입력 받은 n에서 더해준 1의 자리를 제거해준다. 기존 10의 자리가 1의 자리가 된다.

3. n이 0이 될때까지 반복해서 얻어진 자릿수들을 합한 result를 얻는다.

4. 얻은 result를 반환한다.

1. 문자열 형변환을 이용한 풀이

function solution(n) {
    return n.toString()
        .split('')
        .reduce((result, num) => result + parseInt(num), 0);
}

1. 연산을 이용한 풀이

function solution(n) {
    let result = n % 10;
    n = (n - (n % 10)) / 10;
    
    while(n > 0){
        result += n % 10;
         n = (n - (n % 10)) / 10;
    }
    return result;
}
반응형