Hayden's Archive

[알고리즘] 프로그래머스 : 자릿수 더하기 본문

Algorithm

[알고리즘] 프로그래머스 : 자릿수 더하기

_hayden 2020. 5. 15. 15:30

알고리즘 문제 출처 : 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

 

 


내가 작성한 코드

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        double num = 0;
        String mStr = n+"";
        for(int i = mStr.length()-1; i >= 0; i--) {
            num = Math.floor(n/Math.pow(10, i));
            answer += num;
            n -= num * Math.pow(10, i);
        }
        return answer;
    }
}

 

먼저 String형을 만들어서 n의 자릿수를 알아내고자 했다. 그리고 10^i로 나눠서 몫을 구하고 double형인 걸 감안해서 버림한 뒤 그 값을 저장, 그 뒤 원래 값인 n에 num * 10^i을 반복해서 빼는 식으로 코드를 짰는데(10의 거듭제곱은 Math.pow()를 활용) 내가 너무 어렵게 생각했던 것 같다. 계속 10으로 나눠서 나머지를 answer에 더해가고 n에는 계속해서 10을 나눈 몫을 저장하면 되는데(어차피 int형이라서 소수점 표현 못하고 몫밖에 저장 안 됨) 다른 사람의 코드를 보고 깨달았음.

내 방법이 틀린 방법은 아니지만 더 간단하게 풀 수 있는 방법도 있으니 방법론적으로 익혀둬서 나쁠 건 없다. 너무 어렵게 생각하지 않고 문제의 본질을 파악하는 것도 중요하다.