/* 숨어있는 숫자의 덧셈 (2)
* 문자열 my_string이 매개변수로 주어집니다.
* my_string은 소문자, 대문자, 자연수로만 구성되어있습니다.
* my_string안의 자연수들의 합을 return
*
* 1 ≤ my_string의 길이 ≤ 1,000
* 1 ≤ my_string 안의 자연수 ≤ 1000
* 연속된 수는 하나의 숫자로 간주합니다.
* 000123과 같이 0이 선행하는 경우는 없습니다.
* 문자열에 자연수가 없는 경우 0을 return 해주세요.
*
* my_string result
* "aAb1B2cC34oOp" 37 1 + 2 + 34
* "1a2b3c4d123Z" 133 1 + 2 + 3 + 4 + 123
*/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import java.util.regex.*; public class Programmer_0_67 { static String a1 = "aAb1B2cC34oOp"; static String a2 = "1a2b3c4d123Z"; public int solution(String my_string) { int answer = 0; System.out.println(my_string.replaceAll("[a-zA-Z]", "-")); String[] ar = my_string.replaceAll("[a-zA-Z]", " ").split(" "); for(int i = 0; i < ar.length; i++){ if(ar[i].equals("")){ continue; } else answer += Integer.parseInt(ar[i]); } /* 시간초과 String pattern = "^[0-9]*$"; String[] list = my_string.split(""); for(int i = 0; i < list.length; i ++) { String val = ""; while(Pattern.matches(pattern, list[i])){ val += list[i]; i++; } // if(val != "") answer += Integer.parseInt(val); } */ return answer; } public static void main(String args[]){ Programmer_0_67 t = new Programmer_0_67(); System.out.println("---------------------------------------"); System.out.println("result = " + t.solution(a1)); System.out.println("---------------------------------------"); // System.out.println("result2 = " + t.solution(a2)); // System.out.println("---------------------------------------"); } } | cs |