Hayden's Archive
[알고리즘] 프로그래머스 : 자릿수 더하기 본문
알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12931
내가 작성한 코드
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형이라서 소수점 표현 못하고 몫밖에 저장 안 됨) 다른 사람의 코드를 보고 깨달았음.
내 방법이 틀린 방법은 아니지만 더 간단하게 풀 수 있는 방법도 있으니 방법론적으로 익혀둬서 나쁠 건 없다. 너무 어렵게 생각하지 않고 문제의 본질을 파악하는 것도 중요하다.