[프로그래머스] JadenCase 문자열 만들기
코딩테스트 연습 - JadenCase 문자열 만들기 바로가기
문제 설명
잘못된 문제 접근
문제를 처음 풀 때, 마지막 제약 조건을 확인하지 못해서 C++ stringstream 을 활용한 풀이로 접근했었습니다.
stringstream 은 문자열 속 공백 개수와 상관없이 공백이 존재한다면
그곳을 기준으로 공백이 아닌 부분만 반환하기 때문에 첫 시도에서 실패했었습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <sstream>
#include <vector>
using namespace std;
string solution(string s) {
stringstream ss(s);
string buf, answer = "";
while(ss >> buf) {
for(char& c : buf) {
c = tolower(c);
}
if(isalpha(buf[0])) {
buf[0] = toupper(buf[0]);
}
answer += (buf + " ");
}
answer.pop_back();
return answer;
}
옳게된 문제 풀이
제약 조건을 확인해 보면 문자열의 최대 길이는 200 이므로
시간 복잡도가 \(O(N^3)\) 이내 완료되는 알고리즘을 선택하면 되므로
저는 순차 탐색 을 사용했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
if(isalpha(s[0])) {
s[0] = toupper(s[0]);
}
for(int i = 1; i < s.length(); ++i) {
if(s[i - 1] == ' ' && isalpha(s[i])) {
s[i] = toupper(s[i]);
} else if(isalpha(s[i])) {
s[i] = tolower(s[i]);
}
}
return s;
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.