자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
N | answer |
---|---|
123 | 6 |
987 | 24 |
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
10으로 나눈 나머지를 더해주고,
n 을 10으로 나누면서 한자리식 소거하며 더하는 방법을 통해 간단히 해결할 수 있다.
public class Solution {
public int solution(int n) {
int answer = 0;
while(n>0){
answer += n%10;
n /= 10;
}
return answer;
}
}
문자열로 형변환한뒤 스플릿을 사용하면 각각 나누어서 더할 수 있지 않을까라고 가장 먼저 떠올렸던 방법이다.
하지만 코드로 표현했을 때 나눗셈을 이용한 것보다 복잡한 절차가 필요함을 깨닫고 수학을 잘하시는 분들의 풀이를 보며 하나씩 배웠다.
public class Solution {
public int solution(int n) {
int answer = 0;
String[] string = String.valueOf(n).split("");
for (int i = 0; i < string.length; i++) {
answer += Integer.parseInt(string[i]);
}
return answer;
}
}
두 방식의 메모리 사용의 유의미한 차이는 모르겠으나
실행 속도면에선 5~6배 이상 차이가 나는 것 같다.
두번 형변환 하는 방법보다 나눗셈을 통해 간결히 해결한 사람들을 보며 위화감을 느꼈다. 역시 수학은 위대한 것 같다..
지금이라도 다시 수학을 배워야 할 것 같은 느낌