리뷰
문자열에는 숫자도 공백문자도 포함되어 있다.
문자열을 하나씩 순회해서 문자마다 알파벳이 맞는지 확인하는 isalpha() 함수를 썼다. 이건 불필요한 작업이었다.
공백이든 숫자든 toupper() 와 tolower() 에 영향을 받지 않고 에러도 안낸다..
공백과 연속된 문자를 대문자로 바꾸고, 나머지는 전부 lower 처리 하면 된다.
맞았습니다 코드1
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
string space_delimiter = " ";
int pos = 1;
while(pos != string::npos){
pos = s.find(space_delimiter);
string w = s.substr(0, pos);
if (isalpha(w[0])) { w[0] = toupper(w[0]); };
for(int i = 1; i < w.size(); i++){
if (isalpha(w[i])) { w[i] = tolower(w[i]); };
}
answer += (w + " ");
s.erase(0, pos + space_delimiter.length());
}
answer = answer.substr(0, answer.size()-1);
return answer;
}
더 짧은 맞았습니다 코드2
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
answer += toupper(s[0]);
for(int i = 1; i < s.size(); i++){
if(s[i-1] == ' '){ // 공백 뒤에 대문자
answer += toupper(s[i]);
}else{
answer += tolower(s[i]);
}
}
return answer;
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 c++ (0) | 2022.05.22 |
---|---|
[프로그래머스] 숫자의 표현 c++ (0) | 2022.05.22 |
[프로그래머스] 가장 큰 정사각형 찾기 c++ (0) | 2022.05.22 |
[프로그래머스] n^2배열자르기 (0) | 2022.05.19 |
[프로그래머스] 입국심사 c++ (0) | 2022.05.10 |