ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] JadenCase
    알고리즘/programmers 2020. 4. 6. 20:31

     우리가 흔히 접할 수 있는 모든 단어의 앞 문자만을 대문자로 변경하는 문제이다. 

     

     

    [코드]

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main() {
    
        cin.tie(NULL);
        cout.tie(NULL);
        ios::sync_with_stdio(false);
        
    
        string imsi;
    
        getline(cin,imsi);
        //1. 모든 대문자를 소문자로 바꾸기
        for (int i = 0; i < imsi.length(); i++) {
            if (imsi[i] >= 'A' && imsi[i] <= 'Z') {
                imsi[i] += 32;
            }
        }
        for (int i = 0; i < imsi.length(); i++) {
            //2-1. 맨 첫번째 글자 소문자일때 대문자로
            if (i == 0 && (imsi[i] >= 'a' && imsi[i] <= 'z')) {
                imsi[i] -= 32;
            }
            //2-2. 공백 다음 문자가 소문자일경우 대문자로 바꾸기
            if (imsi[i] == ' ' &&(imsi[i+1] >= 'a' && imsi[i+1] <= 'z')) {
                imsi[i + 1] -= 32;
            }
        }
        cout << imsi;
    
        return 0;
    }

     여러가지 변수가 있었다.

    1. 문자들 사이에 뜬금없이 대문자가 있을 경우
    2. 맨 첫번째 문자가 알파벳이 아닐경우

     

    문제를 해결하기위해서 2단계를 거쳤다. 

    1. 모든 대문자를 소문자로 바꾸기 
    -> 문자 중간에 대문자 있을때 대비
    
    2. i 번째 문자가 공백이고 i+1 번째 문자가 소문자일때 대문자로 바꾸기
    -> 단, i=0 (맨 처음 문자 일때는 그전에 공백이 없으니 따로 처리)

     

    '알고리즘 > programmers' 카테고리의 다른 글

    [c++] kakao_winter_19_01(인형 뽑기)  (0) 2020.04.16
Designed by Tistory.