문제 링크
난이도 : Lv. 0

문제 내용

문제 설명

단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.


제한사항

  • my_string은 영소문자와 공백으로만 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string의 맨 앞과 맨 뒤에 글자는 공백이 아닙니다.

입출력 예

my_stringresult
”i love you”[“i”, “love”, “you”]
“programmers”[“programmers”]

문제 분석

공백으로 나누기 ⇒ strtok

작성한 코드

#include <string>
#include <vector>
#include <cstring>
 
using namespace std;
 
vector<string> solution(string my_string) {
    vector<string> answer;
    char charr[1001];
    strcpy(charr, my_string.c_str());
    
    char* ptr = strtok(charr, " ");
    while(ptr != NULL){
        string temp(ptr);
        answer.push_back(temp);
        ptr = strtok(NULL, " ");
    }
    
    return answer;
}

strcpy랑 strtok 둘 다 cstring 헤더에 있음…

string to char array : strcpy(ch_array, string.c_str());

char pointer to string : string str(ch_pointer);

우수 코드 분석

#include <bits/stdc++.h>
using namespace std;
 
vector<string> solution(string my_string) {
    regex rx(" ");
    sregex_token_iterator iter(my_string.begin(), my_string.end(), rx, -1), end;
    return {iter, end};
}