프로그래머스

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

programmers.co.kr

📄 문제

문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

 

❗️ 제한사항

  • 1 ≤ myString의 길이 ≤ 100,000
  • myString은 알파벳 소문자로 이루어진 문자열입니다.

 

↕️ 입출력

myString result
"oxooxoxxox" [1, 2, 1, 0, 1, 0]
"xabcxdefxghi" [0, 3, 3, 3]

 

📝 풀이

#include <string>
#include <vector>
#include <sstream>
#include <iostream>

using namespace std;

vector<string> split(string input, char delimiter)
{
    vector<string> result; // 결과를 리턴할 string 벡터
    stringstream ss(input); // sstream
    string token; // split된 문자열을 임시로 담을 토큰
    
    // getline 함수로 받아온 후 벡터에 삽입
    while(getline(ss, token, delimiter))
        result.push_back(token);
    
    return result;
};

vector<int> solution(string myString) {
    
    vector<int> answer;
    
    vector<string> splited = split(myString, 'x');
    for(string s : splited)
        answer.push_back(s.length());
    
    if(myString[myString.length() - 1] == 'x')
        answer.push_back(0);
    
    return answer;
}
  • split 함수를 구현하여 문제를 해결하였습니다.
  • 구분자인 x가 문자열의 가장 마지막에 있다면, x 후에 0개의 문자열이 있다고 가정하여 문제를 해결합니다.
bonnate