[프로그래머스 Level 1] 이상한 문자 만들기

문제

이상한 문자 만들기  

 

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

 

제한 사항

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

 

코드

#include <string>

using namespace std;

string solution(string s) 
{
    int cnt = 0;
    
    for (int i = 0; i < s.size(); i++)
    {
        if(isspace(s[i]))
            cnt = 0;
        else if(cnt & 1)
            s[i] = tolower(s[i]), cnt++;
        else
            s[i] = toupper(s[i]), cnt++;
    }

    return s;
}

 

나의 생각

isspace : 공백인지 검사하는 함수

tolower : 알파벳을 소문자로 변경, 알파벳이 아니라면 그대로 반환

toupper : 알파벳을 대문자로 변경, 알파벳이 아니라면 그대로 반환