쌓고 쌓다

[프로그래머스] JadenCase 문자열 C++ 풀이 본문

알고리즘/프로그래머스

[프로그래머스] JadenCase 문자열 C++ 풀이

승민아 2022. 9. 21. 17:38

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

 

프로그래머스

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

programmers.co.kr

 

전체 코드

#include <string>
#include <vector>
#include <iostream>
using namespace std;

string solution(string s) {
    string str;    
    string answer = "";
    
    for(int i=0;i<s.length();i++)
    {
        if(s[i]==' ')
        {
            if(str[0]>='a'&&str[0]<='z') // 첫문자를 대문자로 바꿈
                str[0]='A'+(str[0]-'a');
            for(int j=1;j<str.length();j++) // 첫문자 이후를 소문자로 바꿈
            {
                if(str[j]>='A'&&str[j]<='Z')
                    str[j]='a'+(str[j]-'A');
            }
            answer+=str;
            str="";
            answer+=" ";
        }
        else
            str+=s[i];
    }
    
    // 마지막 단어 이후에는 공백을 만나지 못하므로 str에 남은 문자를 변환해준다.
        if(str[0]>='a'&&str[0]<='z') // 첫문자를 대문자로 바꿈
            str[0]='A'+(str[0]-'a');
        for(int j=1;j<str.length();j++) // 첫문자 이후를 소문자로 바꿈
        {
            if(str[j]>='A'&&str[j]<='Z')
                str[j]='a'+(str[j]-'A');
        }
        answer+=str;
    
    
    return answer;
}

 

s를 돌면서 문자를 str에 담는다.

이때 공백을 만난다면 이제까지 담아놓은 str을 JadenCase로 바꾸는 과정을 거칠것이다.

이때 str의 0번째 문자가 소문자라면 대문자로 바꾸는 과정을 거쳐주고

0번째 문자의 이후에 대문자가 나온다면 소문자로 바꿔주는 과정을 거칠것이다.

그리고 완성된 단어를 answer에 추가해주고 만난 공백 또한 answer에 추가해준다.

 

for문을 탈출하면 str에 마지막으로 남은 단어가 남아있을것인데

이 또한 JadenCase로 바꾸는 과정을 거쳐 answer에 추가해준다.

 

Comments