알고리즘 & 자료구조/프로그래머스
[C++/알고리즘] 프로그래머스 (JadenCase 문자열 만들기)
11월1일
2020. 9. 25. 13:30
programmers.co.kr/learn/courses/30/lessons/12951
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건
programmers.co.kr
처음에는 그냥 공백 구분해서 제일 앞글자만 대문자로 바꿔주면 되는 줄 알았더니 다른 조건들이 있었다.
1. 문자열 중간에 있는 대문자를 소문자로 바꾸기
2. 공백이 길게 있는 경우 그 공백도 answer에 그대로 추가해야 함
그러니까 hello woRld 같은 경우에 Hello WoRld로 출력하면 안되고 Hello World로 출력해야 한다.
ssstream으로 풀고 테스트 실행했는데 눈이 침침했는지 분명 똑같은 결과인데 뭐가 다르다는 거야; 하면서 한참 고민했다.
웃기네
string solution(string s) {
string answer = "";
int index = 0;
bool prev_blank = true;
while (index < s.size())
{
if (prev_blank && s[index] != ' ')
{
s[index] = toupper(s[index]);
prev_blank = false;
}
else if (s[index] == ' ')
{
prev_blank = true;
}
else if(isupper(s[index]))
{
s[index] = tolower(s[index]);
}
answer += s[index];
index += 1;
}
return answer;
}