본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] 숨어있는 숫자의 덧셈(2)

by 코딩하는 흰둥이 2023. 3. 12.
반응형

 

  • 내 풀이
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());
        }

댓글