게임 개발 로그
1일차 / 알파벳 대소문자 변환 / C++ / 기초 본문
# 대소문자 바꿔서 출력하기
문제 설명
- 영어 알파벳으로 이루어진 문자열 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 (isupper(str[i])) str[i] = tolower(str[i]);
else str[i] = toupper(str[i]);
}
cout << str;
return 0;
}
다른 사람의 코드
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string str;
cin >> str;
for (auto c : str)
{
if ('a' <= c && c <= 'z')
c -= 'a' - 'A';
else
c += 'a' - 'A';
cout << c;
}
return 0;
}
'a' <= c && c <= 'z' ? c -= 'a' - 'A' : c += 'a' - 'A';
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string str;
cin >> str;
for (char c: str) cout << (c <= 'Z' ? char(c + 32) : char(c - 32));
return 0;
}
- 삼항연산자를 사용하여 간단하게 쓴 것
참고하여 다시 짠 코드
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string str;
cin >> str;
for ( char c : str ) {
('a' <= c && c <= 'z') ? c -= 'a' - 'A' : c += 'a' - 'A';
cout << c;
}
return 0;
}
- 삼항연산자와 범위 기반 for문(Ranged-based for loops)를 사용하여 간소화시킨 코드
- for문 다음 한 줄로 쓰는 것에는 실패했다
- 'a'와 'A'의 차이를 알고 활용할 수 있다는 것에 의의 ( 'z' 기준 32 차이)
- 오히려 가독성을 해치는 악영향 우려
'코테' 카테고리의 다른 글
3일차 / 문자 리스트를 문자열로 변환하기 / C++ / 기초 (0) | 2023.11.02 |
---|---|
3일차 / 문자열 섞기 / C++ / 기초 (0) | 2023.11.02 |
2일차 / 문자열 겹쳐 쓰기 / C++ / 기초 (2) | 2023.11.01 |
2일차 / 홀짝 구분하기 / C++ / 기초 (0) | 2023.11.01 |
2일차 / 문자열 돌리기 / C++ / 기초 (0) | 2023.11.01 |