개발하는 kim-hasa

[c++][프로그래머스] jadenCase 문자열 만들기 본문

Algorithm/Programmers(c++)

[c++][프로그래머스] jadenCase 문자열 만들기

kim-hasa 2021. 8. 23. 13:59

https://programmers.co.kr/learn/courses/30/lessons/12951

 

코딩테스트 연습 - JadenCase 문자열 만들기

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건

programmers.co.kr

jadencase 문자를 만드는 문제입니다.

 

가장 먼저, 공백인 경우 다음 문자는 단어의 첫 시작이므로 대문자로 바꾸기 위해 변수를 조정합니다.

 

또, 맨 처음은 단어의 첫 시작이므로 대문자로 바꿉니다.

 

공백 다음이라면 대문자로 조정하고, 공백 변수를 초기화 합니다.

 

마지막으로, 단어 중간은 다 소문자로 변경합니다.

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";
    int blank = 0;      // 공백인지 아닌지 확인하는 변수
    
    for(int i=0; i<s.length(); i++)
    {
        
        if(s[i] == ' ') // 공백인경우
        {
            blank = 1;
            answer += ' ';
        }
        else if(i == 0)     // 맨 처음 단어
        {
            if(s[i] >= 97 && s[i] <= 122)
            {
                s[i] -= 32;
            }
            answer += s[i];
        }
        else if(blank == 1) //  이전이 공백이었던 경우
        {
            if(s[i] >= 97 && s[i] <= 122)   // 소문자인경우
            {
                s[i] -= 32;
            }
            answer += s[i];
            blank = 0;
        }
        else    // 문자인 경우
        {
            if(s[i] >= 65 && s[i] <= 90)    //대문자인 경우
            {
                s[i] += 32;
            }
            answer += s[i];
        }
    }
    return answer;
}