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

·2023년 1월 2일
0

프로그래머스

목록 보기
8/59

📌 문제 설명

문자열 my_string이 매개 변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어 있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해 주세요.

📌 제한 사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • 1 ≤ my_string 안의 자연수 ≤ 1000
  • 연속된 수는 하나의 숫자로 간주합니다.
  • 000123과 같이 0이 선행하는 경우는 없습니다.
  • 문자열에 자연수가 없는 경우 0을 return 해주세요.

📌 입출력 예

my_stringresult
"aAb1B2cC34oOp"37
"1a2b3c4d123Z"133

📌 코드

import java.util.StringTokenizer;

class Solution
{
    public static boolean isInteger(String s)
    {
        try {
            Integer.parseInt(s);
            return true;
        }catch (NumberFormatException e) {
            return false;
        }
    }
    public static int solution(String my_string)
    {
       int answer = 0;
       for(int i = 0; i < my_string.length(); i++)
       {
            if(!isInteger(my_string.substring(i, i+1)))
                my_string = my_string.replace(
                        my_string.charAt(i), ',');
       }
       StringTokenizer st = new StringTokenizer(my_string, ",");
       while(st.hasMoreTokens())
       {
           answer += Integer.parseInt(st.nextToken());
       }
       return answer;
    }
}

📌 문제 해결 과정

💡 먼저 solution 함수 내에서 문자열 중에 정수가 있는지 없는지 판별하기 위해 isInteger() 함수를 만들어 주었다

💡 for 문 내에서 isInteger()를 사용해 my_string을 한 문자씩 차례로 잘랐을 때, 정수가 아니라면 즉, 알파벳이라면 알파벳을 ,로 대체해 준다

💡 이후 ,를 구분 문자로 두고 StringTokenizer를 사용해 문자열 내에 남은 숫자들을 정수 형태로 바꾸어 answer에 더해 주는 방식으로 문제를 해결하였다

자신 없는 코드였는데 한 번에 성공해서 다행이었다 👍

profile
공부는 많은 양을 하진 않더라도 꾸준히 매일 하기

0개의 댓글