목차

    문제 이름 및 링크

    공백으로 구분하기2

    https://school.programmers.co.kr/learn/courses/30/lessons/181868

     

    출제 사이트

    프로그래머스

     

    문제유형 및 난이도

    문제유형: 문자열

    난이도: 0레벨

    코드 설명

    주어진 문자열에서 공백을 삭제하고 얻은 단어의 배열만 반환하는 문제였습니다.

    단순히 공백 기준으로 split하였고 얻어진 단어가 빈 문자가 아니라면 리스트에 넣은 후 배열로 반환해주는 방법론으로 풀었습니다.

     

    import java.util.*;
    
    class Solution {
        public String[] solution(String my_string) {
            String[] my_strings = my_string.split(" ");
            List<String> list = new LinkedList<>();
            for(String str : my_strings) {
                if(str.equals(" ") || str.equals("")) {
                    // do Nothing
                } else {
                    list.add(str);
                }
            }
            return list.toArray(new String[list.size()]);
        }
    }

     

    0레벨 문제였지만 다른 사람들의 코드에서 새로운걸 얻어 갔습니다.

    trim 메서드로 앞뒤 공백을 자르고 정규화로 문자가 하나 이상 있는 경우만 얻어가는 방법도 재밌어보였습니다.

     

    class Solution {
        public String[] solution(String my_string) {
            return my_string.trim().split("[ ]+");
        }
    }

     

    혹은 백준에서 문제 풀 때, 입력값을 받기 위해 자주 사용하던 StringTokenizer의 원리를 이용하여 푼 사례도 재밌었습니다.

     

    import java.util.*;
    
    class Solution {
        public String[] solution(String my_string) {
            StringTokenizer st = new StringTokenizer(my_string);
            int N = st.countTokens();
            String[] result = new String[N];
            for (int n = 0;n < N;n++)
                result[n] = st.nextToken();
            return result;
        }
    }

     

     

    문자열 문제는 항상 쓰던 방식의 메서드들로 문제 해결을 진행하는 것 같은데요.

    이렇게 문자열에 지원되는 다양한 메서드들로 해결하는 방법들이 참 재밌는 것 같습니다.