C++ Programmers Test/Level 1

[Programmers] [C++] 특수문자 / 대소문자 출력하기

시카Dev 2024. 7. 12. 16:23
다음과 같이 출력하도록 코드를 작성해 주세요.

<출력 예시>
!@#$%^&*(\'"<>?:;

#include <iostream>

using namespace std;

int main(void) {
    cout << "!@#$%^&*(\\'\"<>?:;" << endl;
    return 0;
}

 

작은 따옴표는 \' , 큰 따옴표는 \" 

혹은 로 스트링 리터럴로 R"(출력해야 하는거)"; 이렇게 묶어서도 출력할수 있구나..


 

<문제 설명>
영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

<제한사항>
1 ≤ str의 길이 ≤ 20
str은 알파벳으로 이루어진 문자열입니다.

<입출력 예>
입력 #1
aBcDeFg

출력 #1
AbCdEfG

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    string str;
    cin >> str;
    
    for (int i = 0; i < str.length(); i++)
    {
        if ((str[i] >= 'A') && (str[i] <= 'Z'))   // A부터 Z까지의 대문자라면
        { str[i] = tolower(str[i]); }
        
        else
        { str[i] = toupper(str[i]); }           // 반대는 당연히 소문자이므로
    } 
    
    cout << str;
    return 0;
}

 

다른 사람들꺼 보니까 32를 더하고 빼더라(아스키값)

대문자 A는 65임을 항상 알고 있어야 한다... 

 

length() 말고 size()를 쓰는 사람들도 있길래 왜 그럴까 찾아봤는데, size가 length보다 시간 복잡도가 적어서 그런것 같다. (O(1) > O(n)) 다만 length는 string에 특화되어 있다고 한다.