프로그래머스 - 숨어있는 숫자의 덧셈(2)

남궁진 (jinvicky)·2026년 4월 10일

Problem


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

Solution


  • 숫자가 아니면 더하지 않는다.
  • 숫자라면 다음이 숫자가 아닐 때까지 sb를 사용해서 합친 후 더한다.
  • 마지막에 sb가 남아있는지 확인하고 남아 있으면 더한다.

Point

  • 여기서 StringBuilder 에러가 나기 쉽다.
    왜냐하면 total += Integer.parseInt(sb.toString()); 하기 전에 StringBuilder에 값이 있는 지를 먼저 확인해야 하기 때문이다.

  • 또한 이 로직은 숫자가 아닌 (예를 들면 알파벳) 캐릭터를 만났을 때 total에 더하는데 만약에 주어진 문자열이 숫자로 끝난다면?

    • StringBuilder 안에 남아 있는 요소들은 total에 더해지지 못한 채로 테스트 케이스를 통과하지 못한다. 그래서 샘플 케이스만 통과했다.

Code


class Solution {
    public int solution(String my_string) {
       StringBuilder sb = new StringBuilder();
       int total = 0;
       for(char c : my_string.toCharArray()) {
           if(!Character.isDigit(c)) {
               // 기존 sb를 total에 더하기 
               if(sb.length() > 0) {
                    total += Integer.parseInt(sb.toString());
               }
               // sb 초기화
               sb = new StringBuilder();
               continue;
           }
           sb.append(c);
       }
    
        if(sb.length() > 0) total += Integer.parseInt(sb.toString());
        
       return total;
    }
}
profile
문제를 차근차근 하나씩 해결하려고 합니다:)

0개의 댓글