프로그래머스 특정한 문자를 대문자로 바꾸기 문제 바로가기

alp를 char로 바꾸어서 풀어내기

solution에 input으로 alp가 하필… string으로 들어와서 이걸 어떻게 처리해야할지 고민을 정말 많이 했다. 해결법은 정말 단순했는데, alp을 배열로 생각하고 alp[0] 또는 alp.at(0)을 사용하면 char로 불러와진다는 점이었다. 허허

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, string alp) {
    string answer = "";
    char calp = alp.at(0);    

    for (char ch: my_string){
        if (ch == calp){
            answer += toupper(ch);
        } else{
            answer += ch;
        }
    }
    return answer;
}

substr()을 이용한 풀이

substr() 함수는 2개의 parameters을 받는다. pos는 첫 번째 character의 위치, count는 비교 대상인 substring의 길이. 따라서 이 경우 my_string의 각 자리와 alp의 길이인 1을 parameter로 전달해주면 된다.

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, string alp) 
{
    for(int i = 0; i < my_string.size(); i++)
        if(my_string.substr(i, 1) == alp)
            my_string[i] = toupper(my_string[i]);

    return my_string;
}

출처

References