본문 바로가기
코딩테스트/자바 Level 0

[Java] 세 개의 구분자

by onggury 2023. 7. 24.

문제

임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.

 

예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.

 

문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

 

단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.

 

 

제한사항

  • 1 ≤ myStr 의 길이 ≤ 1,000,000
    • myStr 은 알파벳 소문자로 이루어진 문자열 입니다.
import java.util.ArrayList;

class Solution {
    public String[] solution(String myStr) {
        String[] myStrSplit = myStr.split("[a|b|c]");

        ArrayList<String> strList = new ArrayList<String>();
        for(String str : myStrSplit) {
            if(!str.equals("")) {
                strList.add(str);
            }
        }

        String[] answer = strList.toArray(new String[strList.size()]);
        if(answer.length == 0) {
            answer = new String[1];
            answer[0] = "EMPTY";
        }
        return answer;
    }
}

정규식에 점점 익숙해질수록 소소한 부분에서 많이 편해지는 것 같다.

a, b, c를 통해 split 한 후 나눠진 과정에서 발생한 빈 문자열만 없애는 방식으로 해결했다.

 

 

출처

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