본문 바로가기
  • Let's study
PS/Programmers

[프로그래머스 Lv.0] 숨어있는 숫자의 덧셈(2)(Java)

by 코딩고수이고파 2026. 7. 23.

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

풀이

문자열을 처음부터 끝까지 순회하면서 숫자가 연속으로 등장하면 하나의 숫자로 이어 붙인다.

숫자인 경우에는 straight 문자열에 계속 추가하고, 문자를 만나면 지금까지 모아둔 숫자를 Integer.parseInt()로 정수로 변환하여 answer에 더한 뒤 straight를 비운다.

if (c >= '0' && c <= '9') {
    straight += c;
}
else if (!straight.isEmpty()) {
    answer += Integer.parseInt(straight);
    straight = "";
}
 

여기서 c >= '0' && c <= '9'를 이용해 현재 문자가 숫자인지 판별한다. 숫자가 연속해서 등장하면 straight에 계속 이어 붙이므로 "123"과 같은 문자열도 하나의 숫자로 처리할 수 있다.

반복문이 끝난 뒤에도 마지막 문자가 숫자라면 straight에 값이 남아 있을 수 있으므로 한 번 더 더해주는 과정이 필요하다.

if (!straight.isEmpty()) {
    answer += Integer.parseInt(straight);
}
 

예를 들어 "a12b34c56"이라면 12, 34, 56을 각각 추출하여 최종 결과는 102가 된다.

코드

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        String straight="";
        
        for(int i=0;i<my_string.length();i++){
            char c=my_string.charAt(i);
            
            if (c >= '0' && c <= '9'){
                straight+=c;
            }
            else if(!straight.isEmpty()){
                answer+=Integer.parseInt(straight);
                straight="";
            }
        }
        
        if(!straight.isEmpty())
            answer+=Integer.parseInt(straight);
        
        
        return answer;
    }
}

댓글