프로그래머스 대소문자 바꾸기 문제 바로가기

알고리즘 공부를 하다보니 여러 가지 풀이를 참고하기 위해서는 C++도 공부하는게 좋다는 생각을 하게 되었다. 특히 LeetCode 같은 경우 Python에 비해서 C++이 고품질의 자료도 많고 시간 제약에서도 여유로워질 수 있어서 새로운 언어를 공부하기로 했다. Pointer 개념 말고는 생각보다 문법이 유사해서 기본 문법은 두 시간 정도만에 익힐 수 있었다. (라이브러리 익히는데는 경험치가 많이 필요하겠지만) C++에 대해서는 여러 책들과 강의들이 많지만 개인적으론 간단하게 익히는 선에서는 W3Schools Tutorial가 좋았다.

기본 문법을 익힌 다음에 쉬운 문제에서부터 풀어보기로 했다. 프로그래머스 기준으로 Lv.0 문제에서부터 시작해서 꾸준히 풀어볼 계획이다.

cctype 라이브러리를 이용한 풀이 C++

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main(void) {
    string str;
    cin >> str;
    for (int i = 0; i < str.size(); i++){
        if (isupper(str[i])){
            str[i] = tolower(str[i]);
        } else {
            str[i] = toupper(str[i]);
        }
    }
    cout << str;
    return 0;
}

ASCII 아스키코드를 이용한 풀이 C++

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    string str;
    cin >> str;
    for (int i = 0; i < str.size(); i++){
        if (str[i] >= 'A' && str[i] <= 'Z'){
            str[i] += 32;
        } else {
            str[i] -= 32;
        }
    }
    cout << str;
    return 0;
}

Python 풀이

str = input()
ans = ''
for i in str:
    if i.isupper():
        ans += i.lower()
    else:
        ans += i.upper()
print(ans)

References