문자열
my_string
이 매개 변수로 주어집니다.my_string
은 소문자, 대문자, 자연수로만 구성되어 있습니다.my_string
안의 자연수들의 합을 return하도록 solution 함수를 완성해 주세요.
- 1 ≤
my_string
의 길이 ≤ 1,000- 1 ≤
my_string
안의 자연수 ≤ 1000- 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.
my_string | result |
---|---|
"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에 더해 주는 방식으로 문제를 해결하였다
자신 없는 코드였는데 한 번에 성공해서 다행이었다 👍