이번 문제도 저번에 푼 모음제거 와 비슷한 분위기를 가진 문제인거 같다 좀 더 맛있는(?)
문제 인거같다 🫡
import java.util.Arrays;
class Solution {
public static int solution(String my_string) {
int answer = 0;
String numberString = my_string.replaceAll("[^0-9]", "");
String[] split = numberString.split("");
for (int i = 0; i < split.length; i++) {
int stringNum = Integer.parseInt(split[i]);
answer += stringNum;
}
return answer;
}
}
처음에 my_string에 있는 문자열들을 다 없애주고 싶었다 이 방법은 replaceAll에서 정규식을 통하여 문자를 전부 걸러주었다
my_string = "aAb1B2cC34oOp"
String numberString = my_string.replaceAll("[^0-9]", "");
결과값 => "1234"
이후에 split으로 배열을 하나 만들어 줘야겠다 생각하였다
String[] split = numberString.split("");
결과값 => ["1","2","3","4"]
이제 이 값들을 string 값이 아닌 int값으로 바꿔주기위해 string배열안에 있는 숫자들을 Integer.parseInt로 돌려야 한다고 생각했다
for (int i = 0; i < split.length; i++) {
int stringNum = Integer.parseInt(split[i]);
}
결과값 => [1,2,3,4]
이후에 for문으로 순회하면서 split 배열 안에 있는 값들을 다 더해주자
for (int i = 0; i < split.length; i++) {
int stringNum = Integer.parseInt(split[i]);
answer += stringNum;
}
배열안에 있는값들이 += 연산자에 의해서 전부 더해지면서
answer => 10
라는 결과값을 얻을 수 있다
물론 stream이 엄청 마려운 문제였지만 하나하나 처음부터 차근차근 결과값을 생각하면서 문제를 풀고싶기에.. for문을 채택하였다.