Developer. Designer

프로그래머스 기초트레이닝 Day19-1

세 개의 구분자😀

임의의 문자열이 주어졌을 때 문자 “a”, “b”, “c”를 구분자로 사용해 문자열을 나누고자 합니다.

예를 들어 주어진 문자열이 “baconlettucetomato”라면 나눠진 문자열 목록은 [“onlettu”, “etom”, “to”] 가 됩니다.

문자열 myStr이 주어졌을 때 위 예시와 같이 “a”, “b”, “c”를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 [“EMPTY”]를 return 합니다.

※ 제한 사항
1 ≤ myStr의 길이 ≤ 1,000,000
myStr은 알파벳 소문자로 이루어진 문자열 입니다.

입출력

myStr result
“baconlettucetomato” [“onlettu”, “etom”, “to”]
“abcd” [“d”]
“cabab” [“EMPTY”]


function solution(myStr) {
    var answer = [];
    
    var currentSubstring = "";
    for (var i = 0; i < myStr.length; i++) {
        if (myStr[i] === 'a' || myStr[i] === 'b' || myStr[i] === 'c') {
            if (currentSubstring !== "") {
                answer.push(currentSubstring);
                currentSubstring = "";
            }
        } else {
            currentSubstring += myStr[i];
        }
    }

    if (currentSubstring !== "") {
        answer.push(currentSubstring);
    }

    return answer.length > 0 ? answer : ["EMPTY"];
}

currentSubstring이라는 변수는 현재까지 구분자를 만나지 않은 부분 문자열을 저장합니다.
문자열을 반복하면서 각 문자를 확인합니다.
문자가 “a”, “b”, “c” 중 하나라면, 현재까지의 부분 문자열을 결과 배열에 추가하고, currentSubstring을 초기화합니다.
만약 문자가 “a”, “b”, “c”가 아니라면, 현재 문자를 currentSubstring에 추가합니다.
반복이 끝난 후에도 남아 있는 currentSubstring이 있다면, 마지막 부분 문자열을 결과 배열에 추가합니다.
결과 배열이 비어 있으면 [“EMPTY”]를 반환하고, 그렇지 않으면 결과 배열을 반환합니다.

이 코드를 통해 “a”, “b”, “c”를 구분자로 사용하여 문자열을 나누고, 그 결과를 배열에 저장할 수 있습니다.