문제는.. 여기에서 확인
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
입출력 예 >
N | answer |
123 | 6 |
987 | 24 |
요지는 자연수 N 값이 주어졌을 때, 각 자리수의 합을 구해서 return 하라는 것이다.
나는 아래와 같이 풀었다.
public int solution(int n) {
int answer = 0;
String [] strValues = String.valueOf(n).split("");
for (String value : strValues) {
answer += Integer.parseInt(value);
}
return answer;
}
그런데 다른 사람의 풀이를 보니
굳이 불필요한 형변환은 필요 없었던 것 같다..ㅜㅠ
public int solution(int n) {
int answer = 0;
while (n > 0) {
answer += n % 10;
n = n / 10;
}
return answer;
}
풀이 : n을 % 10 하면 10으로 나눈 나머지 값이 나오게 되는데, 예를 들어 123을 10으로 나눈 나머지는 제일 끝자리인 3이 된다. 이 값을 더하고, 그 다음 n을 10으로 나누면 그 값이 12가 된다. 그리고 while문을 돌아서 다시 12가 된 값을 10으로 나눈 나머지는 2가 된다. 이걸 또 더하고 n이 12일때, 10으로 나누면 n은 1이 된다. 다시 또 while문을.. ㄷㄷㄷ
표로 정리했다..
answer | n | n%10 | n/10 |
3 | 123 | 3 | 12 |
5 | 12 | 2 | 1 |
6 | 1 | 1 | 0 |
즉 while문이 돌 때마다 1의 자리수부터 차례로 떼어져서 더해지는 걸 확인할 수 있다.