JadenCase 문자열 만들기

NJW·2021년 12월 28일
0

코테

목록 보기
3/170

들어가는 말

모든 단어의 첫 문자가 대문자이며 나머지는 전부 소문자인(단어의 첫 문작 숫자일 경우 다음 문자는 소문자이다) JadenCase를 적용해서 문자열을 리턴하는 문제이다.

코드 설명

단어들의 첫 문자만 대문자가 되어야 하므로 문자열을 전부 소문자로 바꾼 뒤에 필요한 문자만 대문자로 바꾸는 방식을 선택했다. 단어는 앞에 공백이 있는지 없는지를 확인해서 정하는데, 제일 첫 단어에는 공백이 없으므로 첫 단락에 첫 단어의 첫 문자가 소문자일 경우 대문자로 바꿔야 한다는 조건문을 삽입했다. 다음으로 주의해야 할 것은 단어의 첫 문자에 숫자가 있을 경우 다음 문자는 소문자여야 한다는 것이다. 이 때는 단어를 대문자로 바꿔주기 전에 첫 문자가 소문자인지 아닌지를 판별하는 조건문을 삽입해 구분할 수 있게 했다.

코드

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    
    if('a' <= s[0] && s[0] <= 'z'){
        s[0] = s[0] - 32;
    }
    
    for(int i=1; i<s.length(); i++){
            if('A' <= s[i] && s[i] <= 'Z'){
            s[i] = s[i] + 32;
        }
    }
    
    for(int i=1; i<s.length(); i++){ 
        
        if(s[i] == ' '){
            if('a' <= s[i+1] && s[i+1] <= 'z'){
            s[i+1] = s[i+1] - 32;
            }
        }
    }
 
    return s;
}

P.s

대문자로 바꿔주는 함수 toupper(), 소문자로 바꿔주는 함수 tolower()을 써주면 더 간단하게 쓸 수 있다.

profile
https://jiwonna52.tistory.com/

0개의 댓글