Question
핵심
- 딱히 꼬아진 문제는 아니고, 직관적으로 바로 풀 수 있는 문제
- 일단 모든 문자를 Lowercase로 변환
- 공백을 기준으로 잘라내고
- 각 단어의 첫 글자를 대문자로 만들어내면 끝!
- [근데 생각 의외로 이게 2단계 문제...]
Code
#include <string>
#include <vector>
using namespace std;
vector<string> split_string(string& targetString, char delimeter = ' ') {
vector<string> splitedResult;
string tmpBuffer = "";
for (int i = 0; i < targetString.length(); i++) {
if (targetString[i] == delimeter) {
splitedResult.push_back(tmpBuffer);
tmpBuffer = "";
} else {
char toPush = targetString[i];
if (targetString[i] >= 'A' && targetString[i] <= 'Z') {
toPush = 'a' + (targetString[i] - 'A');
}
tmpBuffer += toPush;
}
}
if (tmpBuffer != "") {
splitedResult.push_back(tmpBuffer);
}
return splitedResult;
}
string solution(string s) {
string answer = "";
vector<string> spaceSplited = split_string(s);
for (string eachString : spaceSplited) {
string toConcat = "";
if (eachString.length() > 0) {
if (eachString[0] >= 'a' && eachString[0] <= 'z') {
toConcat += 'A' + (eachString[0] - 'a');
} else {
toConcat += eachString[0];
}
for (int i = 1; i < eachString.length(); i++) {
toConcat += eachString[i];
}
}
answer += toConcat;
answer += " ";
}
if (s[s.length() - 1] == ' ') {
return answer;
}
return answer.substr(0, answer.length()-1);
}