PRACTICE/JAVA

[프로그래머스] 숨어있는 숫자의 덧셈(1)

j1ngerhead 2024. 9. 18. 01:39

 

 

문제 링크 

https://school.programmers.co.kr/learn/courses/30/lessons/120851

class Solution {
    public int solution(String my_string) {
        int sum = 0;
        // 문자열을 한 글자씩 순회하며 숫자인지 확인
        for (int i = 0; i < my_string.length(); i++) {
            char ch = my_string.charAt(i);
            if (Character.isDigit(ch)) {
                // 숫자인 경우 정수로 변환하여 더해줌
                sum += ch - '0';  // '0'을 빼면 해당 문자의 숫자 값이 됨
            }
        }
        return sum;
    }
}

 

자바에서는 Character.isDigit() 메서드로 해당 문자가 숫자인지 확인 가능
++ 자바에서 문자(char)는 내부적으로 숫자(아스키 코드 또는 유니코드 값)로 저장된다.

문자를 숫자로 변환하려면 이 아스키 코드 값에서 '0'(48)을 뺀다.

ex ) '1'의 아스키 값은 49 → '1' - '0'은 49 - 48 = 1이 되어 숫자 1이 된다.

결과적으로 sum += ch - '0'; 의 의미

ㄴ ch가 숫자 문자일 때, 이를 정수로 변환하려고
해당 문자의 아스키 값에서 '0'(48)을 빼면 문자 '0'에서 '9'까지의 문자들이
각각 0에서 9 사이의 정수로 변환되고 그 값을 합계 구할 변수 sum에 집어 넣는 것임

320x100