ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스] 이상한 문자 만들기(C++)
    알고리즘 & 자료구조/코딩테스트 2021. 2. 19. 20:01

    문제 설명

    문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

     

    제한 사항

    • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
    • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

    입출력 예

    s                                                                                                      return

    try hello world TrY HeLlO WoRlD

    입출력 예 설명

    try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.

     

     

     

     

    주의해야할 부분이 있다고 하면

    문자열 전체의 짝/홀수가 아니라 공백을 기준으로 짝 홀 을 구분한다는 점.

     

     

    따라서,

     

    1. 공백일때, 짝홀 여부 초기화를 위해서  (count = 0) 

     

    2.공백이 아닌 문자일때 

     

             2-1. 짝수일때

     

            2-1. 홀수일때 

     

    2-2. count++ 해주기 

     

    #include <string>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    
    string solution(string s) {
    	int count = 0; //글자 인덱스에 따른 대소문자 구별을 위한 변수
    	for (int i = 0;i < s.size();i++) {
    		if (s[i] == ' ')
    			count = 0;
    		else {
    			if (count % 2 == 0)
    				s[i] = toupper(s[i]); //toupper 대문자 만드는 함수
    			else if (count % 2 == 1)
    				s[i] = tolower(s[i]); //소문자
    			count++;
    		}
    	}
        return s;
    }
    
    int main(void)
    {
        string s;
        getline(cin,s); //공백 있는 문자열 받을때 사용 
        
        cout << solution(s);
    }

     

    728x90
    반응형

    댓글

Designed by Tistory.