15. [Java] 9로 나눈 나머지
https://school.programmers.co.kr/learn/courses/30/lessons/181914
오답
class Solution {
public int solution(String number) {
int answer = 0;
int sum = 0;
for (int i = 0; i < number.length(); i++) {
sum += number.charAt(i);
}
answer = sum % 9;
return answer;
}
}

위 코드에서 틀린 부분은 number을 순회하면서 sum변수에 누적하는 과정이다.
sum += number.charAt(i);
- charAt(i)가 문자(char)라서 아스키코드 값으로 더해지고 있기 때문이다.
- 3 → 아스키코드 51
- 우리가 원하는 건 숫자 3인데, 실제로는 51 이 더해져서 전체 합이 틀어진다.
sum += number.charAt(i) - '0';
- 문자 - '0' 으로 정수 변환해서 해결했다.
- '3' - '0' → 51 - 48 →3
개선한 코드
class Solution {
public int solution(String number) {
int answer = 0;
int sum = 0;
for (int i = 0; i < number.length(); i++) {
sum += number.charAt(i) - '0';
}
answer = sum % 9;
return answer;
}
}