코린이의 소소한 공부노트

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

코딩테스트 풀이/JAVA

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

무지맘 2022. 11. 9. 21:08

1. Input

1) 문자열 my_string

 

2. Output

1) my_string안의 자연수들의 합

2) 문자열에 자연수가 없는 경우 0을 반환

 

3. Constraint

1) 1 my_string의 길이 1,000

2) 1 my_string 안의 자연수 1000

3) my_string은 소문자, 대문자, 자연수로만 구성되어있다.

4) 연속된 수는 하나의 숫자로 간주한다.

5) 0을 제외하고 0으로 시작되는 수는 없다.

 

4. Example

Input: my_string="1a2b3c4d123Z" -> Output: 133

설명: 숫자는 1, 2, 3, 4, 123이므로 1+2+3+4+123=133

 

5. Code

1) 첫 코드(2022/11/02)

my_string = my_string.replaceAll("[a-zA-Z]"," ").trim();
String[] n = my_string.split(" ");
int answer = 0;
for(int i=0 ; i<n.length ; i++)
    if(!n[i].equals(""))
        answer += Integer.valueOf(n[i]);
return answer;

- replaceAll“[^0-9]”를 한 상태로 실행시키면 n[i]==“”일때 에러 발생

2) 1)의 문제를 해결한 다른 사람의 풀이(2022/11/02)

import java.util.StringTokenizer;
// main()
int answer = 0;
String s = my_string.replaceAll("[^0-9]", " ");
StringTokenizer st = new StringTokenizer(s, " ");
while (st.hasMoreTokens()) {
    answer += Integer.parseInt(st.nextToken());
}
return answer;