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

[프로그래머스] 문자열 잘라서 정렬하기(c++)

by ilp 2023. 12. 24.
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181866

 

프로그래머스

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

programmers.co.kr



#include <bits/stdc++.h>

using namespace std;

vector<string> solution(string myString) {
    vector<string> answer;
    string temp;
    for(int i=0;i<myString.size();i++){
        if(myString[i]!='x'){
            temp+=myString[i];
        }
        else{
            if(temp.empty()==false){
                answer.push_back(temp);
                temp="";
            }
        }
    }
    if(temp.empty()==false){
        answer.push_back(temp);
        temp="";
    }
    sort(answer.begin(),answer.end());
    return answer;
}

 

string temp를 만들어주었다.

myString의 크기만큼 for문을 돌려주고(i)

myString[i]가 "x"가 아니라면

temp에 myString[i]를 더해준다.

그러다가 myString[i]가 "x"라면

그리고 temp가 비어있지 않다면

answeㄱ에 temp를 넣어주고 temp를 초기화해준다.

for문이 끝나고 다시

temp가 비어있지 않은지 확인하고

비어있지 ㅇ낳3다면 answer에 temp를 넣어준다.

마지막으로 answer을 정렬해준다.

참고

코드의 흐름은

"x"가 나올때까지 계속해소temp에 넣어주가다

x가 나오면 temp의 값을 answr에 넣고 x를 초기화 하는 거다.

그리고 마지막에 다시한번더 answer에 tepm를 넣어주는 이유는

예를드어

myString result
"dxccxbbbxaaaa" ["aaaa","bbb","cc","d"]

 

이런 상황이면

마지막 aaaa는 temp에는 있지만 answer에는 없는 상태로 for문이 끝나게 된다.

그래서 temp값이 존재한다면

for문이 끝나고 한번더 answer에 temp값을 넣어주어야 한다.

answer을 정렬할떄 사용한 sort함수는

일단 먼저 대부분 헤더파일이 들어있는

#include <bits/stdc++.h>

를 사용했다ㅡ.

그리고 sort로 문자를 정렬할 수 있다.


반응형