[프로그래머스] JadenCase 문자열 만들기

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

해결전략

 

문자열

 


 

코드

 

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";
    bool flag = true;

    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == ' ') //빈 공객 확인
        {
            answer.push_back(s[i]);
            flag = true;//다음은 첫 문자
        }
    	else if (flag == true)//첫 문자인 경우
        {    
            if ('a' <= s[i] && s[i] <= 'z')
                answer.push_back(s[i] - 'a' + 'A');//소문자일 경우 대문자 넣기
            else
                answer.push_back(s[i]);

        	flag = false;
        }       
        else{
            if ('A' <= s[i] && s[i] <= 'Z')
                answer.push_back(s[i] - 'A' + 'a');
            else 
                answer.push_back(s[i]);
            
        	flag = false;
        }
    }
    
    return answer;
}

 


 

 

주의할 점

 

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";
    bool flag = true;

    for (int i = 0; i < s.size(); i++)
    {
        if (flag == true)//첫 문자인 경우
        {    
            if ('a' <= s[i] && s[i] <= 'z')
                answer.push_back(s[i] - 'a' + 'A');//소문자일 경우 대문자 넣기
            else
                answer.push_back(s[i]);

        	flag = false;
        }
        else if (s[i] == ' ') //빈 공객 확인
        {
            answer.push_back(s[i]);
            flag = true;//다음은 첫 문자
        }
        else{
            if ('A' <= s[i] && s[i] <= 'Z')
                answer.push_back(s[i] - 'A' + 'a');
            else 
                answer.push_back(s[i]);
            
        	flag = false;
        }

    }
    
    return answer;
}

위와 같이 

 

if (flag == true) 를

 

else if (s[i] == ' ') 보다 먼저 체크하면 문제가 된다.

 

 

 

if (s[i] == ' ') //빈 공객 확인

 

else if (flag == true)//첫 문자인 경우

 

위의 순서로 실행해야 한다.

 

빈칸을 먼저 체크해야 예외 상황을 방지할 수 있다. 조심하자.