Programmers Review

[Lv 2] JadenCase 문자열 만들기

hanseongbugi 2024. 6. 23. 18:07

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

 

프로그래머스

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

programmers.co.kr

 

문자열을 처음부터 끝까지 읽으며 공백을 기준으로 자른다.

이때 공백이 연속으로 나올 수 있으므로 temp를 사용해 비어있다면 answer에 더하지 않는다.

또한 문자열의 첫글자를 대문자로 바꿔야하는데 숫자인 경우와 원래 대문자인 경우 원래 글자를 유지한다.

문자열의 두번째 글자부터 대문자는 소문자로 바꾸고, 소문자는 그대로 유지한다.

 

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

string calc(string s){
    string temp = "";
    if(s[0] >= '0' && s[0] <= '9'){
        temp += s[0];
    }
    else{
        if(s[0] >= 'A' && s[0] <= 'Z')
            temp += s[0];
        else{
            temp += s[0] - 32;
        }
    }
    for(int i = 1;i<s.length();i++){
        if(s[i] >= 'A' && s[i] <= 'Z')
            temp += s[i] + 32;
        else
            temp += s[i];
    }
    
    return temp;
}

string solution(string s) {
    string answer = "";

    int idx = 0;
    string temp = "";
    for(int i = 0;i < s.length();i++){
        if(s[i] == ' '){
            if(!temp.empty()){
                temp = calc(temp);
                answer += temp;
            }
            answer += " ";
            temp = "";
        }
        else{
            temp += s[i];
        }
    }
    if(!temp.empty()){
        temp = calc(temp);
        answer += temp;
    }
    return answer;
}