본문 바로가기
코딩테스트 준비/프로그래머스

[프로그래머스][C++][0단계] A 강조하기

by 스테디코디스트 2023. 11. 3.
반응형

<문제 소개>


<소스 코드>

#include <string>
#include <vector>

using namespace std;

string solution(string myString) 
{
    string answer = "";
    
    for(int i = 0; i < myString.size(); i++)
    {
        if(myString[i] == 'a')
        {
            myString[i] = 'A';
        }
        else if(myString[i] > 'A' && myString[i] <= 'Z')
        {
            myString[i]  = myString[i] - 'A' + 'a';
        }
    }
    
    answer = myString;
    
    return answer;
}

<풀이과정>

1. 주어진 문자열 myString의 각 문자들을 반복하며 각 경우에 맞게 변환시켜준다.

2. 문자가 'a'인 경우는 단순히 해당 문자를 'A'로 변환시켜준다.

3. 대문자들은 아스키코드로 연결되어 표현될 수 있어서 'A' 보다 크고 'Z' 보다 작거나 같다고 표현하여 대문자 'A' 가 아닌 나머지 대문자들의 범위를 구할 수 있고, 해당 범위에 들어오는 경우에는 'A' 만큼 빼주어 몇번째 알파벳인지를 찾고, 다시 'a'만큼 더해주어 소문자 'a' 에서 몇번째 떨어진 알파벳으로 변경해준다. 즉 대문자를 소문자로 변환시켜준다.

4. 모든 문자에 대해 위의 과정을 반복하고 반복이 끝나면 변환된 문자열을 answer에 담고 answer를 리턴해준다.


<코멘트>

최근에 이런 대소문자 아스키코드 변환 문제를 많이 접해서 쉽게 풀 수 있었다.

 다음에는 isupper와 같은 함수를 사용해 보아야겠다.


<제출결과>