본문 바로가기
c++/프로그래머스

[프로그래머스] 세 개의 구분자(c++)

by ilp 2024. 1. 13.
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr



#include <bits/stdc++.h>
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'){
            if(temp!=""){
                answer.push_back(temp);
                temp="";
            }      
        }
        else{
            temp+=myStr[i];
        }
    }
    if(temp!=""){
        answer.push_back(temp);
        temp="";
    }
    if(answer.empty()==true){
        answer.push_back("EMPTY");
    }
        
    return answer;
}

 

answer는 결과를 저장할 문자열 벡터이다.

temp 문자열로, 조건에 맞는 문자들을 임시로 저장합니다.

myStr을 처음 부터 끝까지 순회한다.(i)

만약 mySTr[i]가 'a','b','c'중 하나면

  • temp가 비어있지 않으면
  • temp를 answer에 추가하고 temp.를 비워준다.

만약 'a','b','c'가 아니면

  • temp에 myStr[i]를 추가한다.

for문이 끝나고

temp에 분자열이 남아있으면

  • answer에 temp를 추가한다.

answer이 비어잇으면

  • answer에 "EMPTY"를 추가해준다.

주어진 문자열에서 'a', 'b', 'c' 문자를 제외한 부분 문자열들을 찾아내고, 그 부분 문자열들을 순서대로 벡터에 저장한다.

만약 'a', 'b', 'c'를 제외한 문자가 없다면, "EMPTY"를 반환헌더,

참고

myStr[i]는 문자열이 아니라 문자이기때문에

myStr[i]=='a'||myStr[i]=='b'||myStr[i]=='c'

이렇게 작은따옴표를 사용했다.


 
반응형