알고리즘/프로그래머스 1단계

프로그래머스 - 이상한 문자 만들기 - C++

게임만드는학생 2023. 10. 17. 12:10

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

 

프로그래머스

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

programmers.co.kr

 

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

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

    int cnt = 0;

    for (int i = 0; i < s.length(); i++)
    {
        if (s[i] == ' ')
        {
            cnt = 0;
        }

        else
        {
            if (cnt % 2 == 0)
                s[i] = (char)toupper(s[i]);
            else
                s[i] = (char)tolower(s[i]);
            cnt++;
        }
    }

    return s;
}

 

설명

이 문제는 단어별로 단어의 짝수인덱스의 알파벳은 대문자, 홀수인덱스는 소문자로 바꾸는 것이다. 

예를들어 they are doctors 라면 they에서 짝수, 홀수 인덱스를 바꾸고 다시 are 이면 are의 a를 기준으로 

a와e를 바꾼다. 

 

따라서 cnt라는 변수를 두고 각 단어마다의 짝 홀을 판단한다.

for문을 돌며 공백이면 단어가 끝난 것이니 cnt를 0으로 초기화한다. 

그게 아니라면 cnt를 2로 나머지연산하여 0이면 짝수이니 대문자로, 그렇지않다면 홀수이니 소문자로 바꾼다. 

그리고 cnt를 증가시킨다. 

 

여기서 toupper는 매개변수가 소문자면 이 문자를 대문자로 변경하고 int로 반환해준다. 

tolower도 마찬가지이다.