Level. 0
문제
임의의 문자열이 주어졌을 때 문자 "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.*;
class Solution {
public String[] solution(String myStr) {
String[] answer = {} ;
String[] sp = myStr.split("[abc]");
ArrayList<String> list = new ArrayList<String>();
for(int i=0; i<sp.length; i++){
if(!sp[i].equals("") ) list.add(sp[i]);
}
answer = list.toArray(new String[list.size()]);
if(answer.length == 0){
answer = new String[1];
answer[0] = "EMPTY";
}
return answer;
}
}
String[] sp = myStr.split("[abc]");
- [abc] : a 또는 b 또는 c 를 포함한 문자열을 매칭시키는 정규식이다. (a|b|c) 와 동일하다.
* 정규식 참고 링크
다른 풀이
import java.util.Arrays;
class Solution {
public String[] solution(String myStr) {
String[] arr = Arrays.stream(myStr.split("[abc]+")).filter(str -> !str.isEmpty()).toArray(String[]::new);
return arr.length == 0 ? new String[] { "EMPTY" } : arr;
}
}
- [abc]+ : 1개 이상의 a 또는 b 또는 c 를 포함한 문자열을 매칭한다.
https://school.programmers.co.kr/learn/courses/30/lessons/181862
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 삼각형의 완성조건 (2) (0) | 2023.09.03 |
---|---|
[프로그래머스(Java)] 구슬을 나누는 경우의 수 - 부동소숫점문제 (1) | 2023.09.03 |
[프로그래머스(Java)] 배열 만들기 4 - Stack (0) | 2023.08.27 |
[프로그래머스(Java)] 문자열 계산하기 / split (0) | 2023.08.26 |
[프로그래머스(Java)] 영어가 싫어요 / map, replaceAll (0) | 2023.08.26 |