본문 바로가기

Algorithm

[백준] 2744번 : 대소문자 바꾸기 - C/C++

728x90

 

여러가지 상황이 복잡하게 섞여있는 문제가 아니라 그냥 구현만 하면 되는 문제.

머릿속에서 '이렇게 하면 되겠다' 라는 생각이 바로 떠올랐다.

바로 떠오를 것도 없다.

문제를 따라가면 되니까..

 

 

순서는 다음과 같다.

1. 배열로 문자열 입력 받기

2. 소문자 <--> 대문자 전환해주기

3. 결과 출력

 

 

 

 

문제에서 단어 길이는 최대 100이라고 했으니, 아래처럼 설정해주자.

char st[101];
cin >> st;

입력도 받았다면, 검증하기.

 

 

지난 글에서도 다루었지만, 알파벳은 아스키(ASCII) 코드로 저장된다.

특정 알파벳은 특정 숫자와 매칭된다는 것이다.

대문자와 소문자는 정확히 32라는 차이가 난다.

코드로 구현해보자.

for(int i=0;i<sizeof(st);i++){
        if(st[i] >= 'A' && st[i] <= 'Z'){
            st[i] += 32;
        } else if (st[i] >= 'a' && st[i] <= 'z'){
            st[i] -= 32;
        }
}

 

 

이런.. 너무나 쉽게 해결이 된다.

 

전체 코드

#include <iostream>

//대소문자 바꾸기   
using namespace std;

int main(){
    char st[101];
    cin >> st;

    for(int i=0;i<sizeof(st);i++){
        if(st[i] >= 'A' && st[i] <= 'Z'){
            st[i] += 32;
        } else if (st[i] >= 'a' && st[i] <= 'z'){
            st[i] -= 32;
        }
    }
    cout << st << '\n';
    return 0;
}

 

 

 

 

단순한 구현문제였고, 쉽게 풀렸다.

브론즈5의 난이도였는데..

개인적인 생각으로는 브론즈4..?

오류 한 번 안 나고 깔끔하게 해결된 문제였다.

 

 

 

더 좋은 풀이가 있다면 댓글로 알려주세요 !!

피드백 환영입니다☺️

728x90