[프로그래머스_ Java_Lv0] 숨어있는 숫자 덧셈. Character.isDigit() (숫자 체크)

박경희·2025년 2월 10일

코딩테스트

목록 보기
52/69

for, 아스키 코드

public int solution(String my_string) {
        int answer = 0;

        for (int i : my_string.toCharArray()){
            if (i - '0' < 10) {
                answer += (i - '0');
            }
        }
        return answer;
    }
  • 숫자인지 확인하려면 ASCII 값을 비교해야 하는데, 직접 연산을 수행하므로 다소 비효율적이다.

코드개선

for

public int solution(String my_string) {
    int answer = 0;
    
    for (char c : my_string.toCharArray()) {
        if (Character.isDigit(c)) {
            answer += c - '0';
        }
    }
    
    return answer;
}
  • i - '0' < 10 → Character.isDigit(c) 사용하여 가독성 증가.
  • int i 대신 char c 사용이 더 직관적이다.

✅ Character.isDigit()

Character.isDigit(c)는 문자가 숫자(0~9)인지 판별하는 메서드이다.

boolean isNumber = Character.isDigit(c);
  • c가 숫자(0~9) 문자이면 true를 반환.
  • c가 알파벳, 특수문자 등이면 false를 반환.

숫자인지 체크할 때는 Character.isDigit(c)가 가장 정확하고 가독성이 좋다.


Stream

public int solution(String my_string) {
    return my_string.chars() 
            .map(c -> Character.isDigit(c) ? c - '0' : 0)
            .sum(); 
}
  • toCharArray() 대신 .chars() 사용 → 더 직관적이고 성능이 좋다.
  • Character.isDigit(c) 사용 → 숫자인지 확인하는 더 정확한 방법이다.
  • .map()에서 숫자가 아닌 문자는 0으로 처리 → 불필요한 연산 제거.
  • .sum()으로 자동 합산 → answer 변수를 따로 만들 필요 없다.

0개의 댓글