[프로그래머스 / C++] 세 개의 구분자

YH·2023년 11월 29일
0

문제

세 개의 구분자 : 문제 링크


문제 분석

  • 임의의 문자열이 주어졌을 때 문자 "a","b","c"를 구분자로 사용해 문자열을 나누고자 한다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu","etom","to"]가 된다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a","b","c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열일 빈 배열이라면 ["EMPTY"]를 return
  • 문자열을 순서대로 저장할 문자열 배열 answer, 임시로 문자열을 저장할 문자열 temp를 초기화. for loop를 통해 myStr의 첫번째부터 마지막 원소까지 순환하고, if문을 통해 해당 인덱스의 문자가 a, b, c일때 temp에 해당 문자를 저장. else if문을 통해 문자열 temp가 공백이 아니라면 answer에 문자열을 저장 후, 공백으로 초기화. loop 탈출 후, if ~ else 문을 통해 temp가 공백이 아니라면 temp 내 문자열을, 공백이라면 빈 배열이므로 "EMPTY"를 answer에 저장. 최종적으로 저장된 answer을 return

풀이

#include <vector>
#include <string>

using namespace std;

vector<string> solution(string myStr) {
    vector<string> answer;
    string temp;
    
    for(int i = 0; i < myStr.size(); ++i) {
        if(myStr[i] != 'a' && myStr[i] != 'b' && myStr[i] != 'c') temp += myStr[i];
        else if(temp != "") { 
            answer.push_back(temp);
            temp = "";
        }
    }
    if(temp != "") answer.push_back(temp);
    else answer.push_back("EMPTY");
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글