728x90
코드 힌트
split, replaceAll를 하지 않은 힌트(정답에는 적어놓겠습니다.)
- 문자열을 구분자에 따라 나누기:
- 문자열에서 특정 문자('a', 'b', 'c')를 기준으로 문자열을 나누는 문제입니다.
- 각 문자와 구분자가 있을 때까지 계속해서 문자열을 모은 후, 구분자가 나오면 모은 문자열을 저장하고 다시 초기화합니다.
- 문자열 저장과 초기화:
- StringBuilder를 사용하여 구분자가 나오기 전까지 문자를 저장합니다.
- 구분자가 나오면 StringBuilder의 내용을 리스트에 저장하고 초기화합니다.
- 리스트를 배열로 변환:
- 구분자를 기준으로 나눈 문자열들을 리스트에 저장한 후, 최종적으로 이 리스트를 배열로 변환합니다.
- 특별한 경우 처리:
- 구분자가 전혀 없는 경우, 빈 문자열 리스트를 반환하지 않도록 "EMPTY"를 반환합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
public String[] solution(String myStr) {
// a, b, c 문자로 구분된 문자열을 저장할 리스트와 StringBuilder 초기화
List<String> list = new ArrayList<>();
StringBuilder sb = new StringBuilder();
// 문자열의 각 문자를 순회
for (int i = 0; i < myStr.length(); i++) {
char c = myStr.charAt(i);
// 현재 문자가 'a', 'b', 'c' 중 하나이면서 StringBuilder에 저장된 내용이 있을 때
if ((c == 'a' || c == 'b' || c == 'c') && sb.length() > 0) {
list.add(sb.toString()); // StringBuilder에 저장된 문자열을 리스트에 추가
sb.setLength(0); // StringBuilder를 초기화
}
// 현재 문자가 'a', 'b', 'c'가 아닌 경우
else if (c != 'a' && c != 'b' && c != 'c'){
sb.append(c); // 현재 문자를 StringBuilder에 추가
}
}
// 반복문이 끝난 후에도 StringBuilder에 저장된 내용이 있다면 리스트에 추가
if (sb.length() > 0) {
list.add(sb.toString());
}
// 리스트가 비어있다면 "EMPTY"를 반환
if (list.size() == 0) {
return new String[]{"EMPTY"};
}
// 리스트의 내용을 배열로 변환하여 반환
String[] result = new String[list.size()];
for (int i = 0; i < result.length; i++) {
result[i] = list.get(i);
}
return result;
}
}
class Solution {
public String[] solution(String myStr) {
// 'a', 'b', 'c'를 포함하는 연속된 부분 문자열을 공백으로 대체하고 앞뒤 공백을 제거한 후, 공백을 기준으로 문자열을 분할합니다.
String[] result = myStr.replaceAll("[abc]+", " ").trim().split(" ");
// 결과 배열의 첫 번째 요소가 빈 문자열인 경우, 입력 문자열에 'a', 'b', 'c' 외의 문자가 없었음을 의미합니다.
// 이 경우, 결과 배열에 "EMPTY"를 반환합니다.
if (result[0].isEmpty())
return new String[]{"EMPTY"};
// 그 외의 경우, 분할된 문자열 배열을 반환합니다.
return result;
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 커피 심부름 (0) | 2024.08.13 |
---|---|
[프로그래머스] 문자열 묶기 (0) | 2024.08.13 |
[프로그래머스] 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.08.13 |
[프로그래머스] 문자열이 몇 번 등장하는지 세기 (0) | 2024.08.13 |
[프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2024.08.13 |