문제 설명
임의의 문자열이 주어졌을 때 문자 “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;
import java.util.List;
class Solution {
public String[] solution(String myStr) {
List<String> result = new ArrayList<>(); // 결과를 담을 리스트 생성
StringBuilder sb = new StringBuilder(); // 임시 문자열을 저장할 객체 생성
for (char str : myStr.toCharArray()) {
if (str == 'a' || str == 'b' || str == 'c') { // 문자가 a, b, c 중 하나인 경우
if (sb.length() > 0) { // sb에 문자열이 있는 경우 리스트에 추가 후 초기화
result.add(sb.toString());
sb = new StringBuilder();
}
} else { // a,b,c 아닌 경우 sb에 문자열 추가
sb.append(str);
}
}
if (sb.length() > 0) { // 반복문 종료 후 sb에 남은 문자열이 있는 경우 리스트에 추가
result.add(sb.toString());
}
if (result.isEmpty()) { // 빈 배열인 경우 "EMPTY" 반환
return new String[]{"EMPTY"};
} else { // 빈 배열이 아닌 경우 리스트를 배열로 변환하여 반환
return result.toArray(new String[0]);
}
}
}
- 'a', 'b', 'c' 를 기준으로 문자열을 나눈다
- StringBuilder를 활용하여 임시 문자열을 저장하고, 리스트에 추가한다
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘 & 코딩 테스트 > [Java]프로그래머스' 카테고리의 다른 글
| [프로그래머스_Java] Lv.0 진료 순서 정하기 (1) | 2024.01.04 |
|---|---|
| [프로그래머스_Java] Lv.0 배열의 길이를 2의 거듭 제곱으로 만들기 (1) | 2024.01.04 |
| [프로그래머스_Java] Lv.0 문자열이 몇 번 등장하는지 세기 (1) | 2024.01.04 |
| [프로그래머스_Java] Lv.0 수열과 구간 쿼리 4 (2) | 2024.01.04 |
| [프로그래머스_Java] Lv.0 수열과 구간 쿼리 3 (0) | 2024.01.04 |