Lv 0. 대문자와 소문자

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

 

처음에, 대문자를 소문자로, 소문자를 대문자로 변경하는 함수를 생각했는데, 어느 헤더에 어떤 함수인지가 생각이 나지 않아서 그냥 아스키코드 상에서의 값을 찾아서 해당 값에서 차이만큼을 이용해서 변형시키는 코드를 작성해서 제출했다. 

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

string solution(string str) {
    string answer = "";
    // cout<<int('a')<<' '<<int('z')<<' '<<int('A')<<' '<<int('Z');
    for(auto c: str){
        if(c>=97 && c<=122) answer+=char(c-32);
        else answer+=char(c+32);
    }
    return answer;
}

값을 출력해보면서 확인해보고 해당 차이만큼 더하고 빼는 형태의 코드를 작성했는데, 함수가 생각나지 않으면 이런식의 풀이를 활용하는것이 좋을것 같다. 아스키코드 숫자값을 외우지 않더라도 직접 cout 해보면서 차이를 찾아내면 된다. 

 

다른 사람의 풀이를 찾아보니, 내가 원하는 형태대로 함수를 이용해서 판별하고 소문자를 대문자로, 대문자를 소문자로 변환하는 형태의 코드를 작성한 풀이가 있어서 첨부해본다. 

#include <string>
#include <vector>

using namespace std;

string solution(string my_string) {
    for(auto& v : my_string){
        if(islower(v)) v = toupper(v);
        else v = tolower(v);
    }
    return my_string;
}

사용한 함수들을 보면, 

islower()

toupper()

tolower() 

함수들이고, 이 함수들은 추가적으로 헤더를 추가한게 없는것을 보니까 <string> 헤더에 있는 함수들로 보여진다. 

islower를 사용한것을 보니 isupper() 함수도 있을 것으로 보여진다. 

다음에는 

islower()

Isupper()

tolower()

toupper()

함수들을 떠올려서 문제를 풀어보도록 하자. 

 

 

  Comments,     Trackbacks