문제 설명
임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.
예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.
문자열
myStr
이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.
입출력 예
myStr | result |
"baconlettucetomato" | ["onlettu", "etom", "to"] |
"abcd" | ["d"] |
"cabab" | ["EMPTY"] |
입출력 예 설명
입출력 예 #1
- 문제 설명의 예시와 같습니다.
입출력 예 #2
- "c" 이전에는 "a", "b", "c" 이외의 문자가 없습니다.
- "c" 이후에 문자열 "d"가 있으므로 "d"를 저장합니다.
- 따라서 ["d"]를 return 합니다.
입출력 예 #3
- "a", "b", "c" 이외의 문자가 존재하지 않습니다. 따라서 저장할 문자열이 없습니다.
- 따라서 ["EMPTY"]를 return 합니다.
코드
import java.util.*;
class Solution {
public String[] solution(String myStr) {
List<String> resultList = new ArrayList();
StringBuilder word = new StringBuilder();
for(int i = 0; i < myStr.length(); i++) {
char currentChar = myStr.charAt(i);
if(currentChar == 'a' || currentChar == 'b' || currentChar == 'c') {
if(word.length() > 0) { // 빈 문자열 방지
resultList.add(word.toString()); // 리스트에 추가
word.setLength(0); // 초기화
}
} else {
word.append(currentChar);
}
}
if (word.length() > 0) {
resultList.add(word.toString());
}
if(resultList.size() == 0) {
resultList.add("EMPTY");
}
return resultList.toArray(new String[0]);
}
}

split + 정규표현식 방법
import java.util.*;
class Solution {
public String[] solution(String myStr) {
// 1. 정규표현식으로 문자열을 분리합니다.
// 정규표현식 "[abc]+"는 'a' 또는 'b' 또는 'c' 문자가
// 하나 이상('+' 기호) 연속된 패턴을 구분자로 사용하라는 의미입니다.
// String.split()은 구분자로 사용된 문자열을 기준으로 문자열을 나눕니다.
String[] tempResult = myStr.split("[abc]+");
// 2. 결과 배열(tempResult)을 List로 변환하고 빈 문자열("")을 제거합니다.
// split() 메서드는 문자열 시작이나 끝에 구분자가 있거나,
// 구분자가 연속으로 나올 경우 빈 문자열("")을 배열 요소로 생성합니다.
// 문제 조건 "두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며"를 만족시킵니다.
List<String> resultList = new ArrayList<>();
for (String s : tempResult) {
if (!s.isEmpty()) { // 빈 문자열("")이 아닌 경우에만 리스트에 추가
resultList.add(s);
}
}
// 3. 최종 요구사항에 맞춰 처리합니다.
if (resultList.isEmpty()) {
return new String[]{"EMPTY"};
}
// 4. List를 String 배열로 변환하여 반환합니다.
return resultList.toArray(new String[0]);
}
}

Share article