Skip to main content

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;
    }
}
image.png

위 코드에서 틀린 부분은 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;
    }
}

image.png