- 내 풀이
class Solution {
public int solution(String my_string) {
int answer = 0;
// 매개변수의 소문자와 대문자를 제외한다.
String[] check = my_string.split("[a-zA-Z]");
// 공백이 들어가있는 값을 제외
for (int i = 0; i < check.length; i++) {
if(!check[i].equals("")){
answer += Integer.parseInt(check[i]);
}
}
return answer;
}
}
몇줄 되지도 않는 코드를 Intellij에서 찍히는 값 하나를 잘못보고 몇시간을 헤맸다
정작 코드짜는건 5분도 안걸렸는데 말이지
- 다른 사람 풀이
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] str = my_string.replaceAll("[a-zA-Z]", " ").split(" ");
for(String s : str){
if(!s.equals("")) answer += Integer.valueOf(s);
}
return answer;
}
}
import java.util.StringTokenizer;
class Solution {
public int solution(String my_string) {
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;
}
}
위의 코드는 StringTokenizer를 사용한 풀이이다 이 풀이에서 처음보게 되어 찾아보았다.
StringTokenizer 는 split 처럼 문자열을 나눠주는데 말그대로 문자열을 토큰화 시켜주는 기능이다.
- 문자열 안의 띄어쓰기로 구분한다.
String my_string = "문자에 띄어쓰기가 있어야 문자열을 분리 해준다.";
StringTokenizer s = new StringTokenizer(my_string);
while (s.hasMoreTokens()){
System.err.println(s.nextToken());
}
- 문자열과 구분자를 같이 줄 수 있다.
String my_string = "aAb1B2cC34o1Op";
StringTokenizer s = new StringTokenizer(my_string , "1");
while (s.hasMoreTokens()){
System.err.println(s.nextToken());
}
- 문자열의 구분자를 포함할지 하지 않을 지
String my_string = "aAb1B2cC34o1Op";
StringTokenizer s = new StringTokenizer(my_string , "1", true);
while (s.hasMoreTokens()){
System.err.println(s.nextToken());
}
String my_string = "aAb1B2cC34o1Op";
StringTokenizer s = new StringTokenizer(my_string , "1", false);
while (s.hasMoreTokens()){
System.err.println(s.nextToken());
}
'프로그래머스 > [프로그래머스 - JAVA] Lv.0' 카테고리의 다른 글
[프로그래머스 - JAVA] 소인수분해 (0) | 2023.03.12 |
---|---|
[프로그래머스 - JAVA] 이진수 더하기 (0) | 2023.03.12 |
[프로그래머스 - JAVA] 한 번만 등장한 문자 (0) | 2023.03.12 |
[프로그래머스 - JAVA] 진료순서 정하기 (0) | 2023.03.12 |
[프로그래머스 - JAVA] K의 개수 (0) | 2023.03.12 |
댓글