개발하는 kim-hasa

[c++][프로그래머스] 이상한 문자 만들기 본문

Algorithm/Programmers(c++)

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

kim-hasa 2021. 8. 4. 14:03

https://programmers.co.kr/learn/courses/30/lessons/12930

 

코딩테스트 연습 - 이상한 문자 만들기

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

programmers.co.kr

단어마다 짝수번째는 대문자로, 홀수번째는 소문자로 만드는 문제입니다.

 

가장 먼저 반복문을 돌리면서 문자 하나씩 계산합니다. 이때 공백이 나오면 인덱스를 초기화합니다.

 

공백이 아니라면 인덱스가 짝수인지 홀수인지 계산합니다. 그 후 아스키코드값을 이용해서

대문자와 소문자로 각각 변경합니다. 그리고 정답 배열에 넣어주면 됩니다.

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";
    int textCount = 0;      // 문자의 인덱스를 계산하기 위한 변수
    
    for(int i=0; i<s.length(); i++)
    {
        char text = s[i];
        
        if(text == ' ')     // 공백이라면 문자 인덱스 초기화
        {
            textCount = 0;
            answer += ' ';
        }
        else
        {
            if( textCount % 2 == 0)
            {
                if(text >= 97 && text <= 122)    // 소문자라면 대문자로
                {
                text -= 32;
                }
             
                answer += text;
            }
            else if( textCount % 2 == 1)
            {
                if(text >= 65 && text <= 90)    // 대문자라면 소문자로
                {
                    text += 32;
                }
                answer += text;
            }   
            textCount++;
        }
    }
    return answer;
}