문제
임의의 문자열이 주어졌을 때 문자 "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