[백준 BOJ] 2744번 대소문자 바꾸기 (C++/cpp)

2022. 4. 11. 00:40PS (Program Solving)/BOJ (백준)

문제 설명

https://www.acmicpc.net/problem/2744

 

2744번: 대소문자 바꾸기

영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오.

www.acmicpc.net

백준 BOJ 2744번 대소문자 바꾸기 문제 사진

 

접근 방법 - 아스키코드를 이용한 기본 문제

백준의 2744번 문제는 아스키코드를 주로 이용하여 해결하는 문제이다.

해당 문제는, 입력받은 문자열에 있어 각 문자의 대소문자를 교체하여 출력해야 하는 문제이다.

아스키코드에 대해 어느 정도 이해하고 있다면 어렵지 않게 풀 수 있는 문제로 예상된다.

아직 아스키코드의 정의에 대해 어색하다면, 아스키코드 표를 참고하며 시도해보는 것이 좋다.

여기서, 여러 문자가 포함된 문자열을 입력값으로 받기 때문에 string 헤더를 응용하는 것이 좋을 것이다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 문자열(str)을 입력받는다.

 

2) 입력받은 문자열의 길이만큼 반복문을 실행하며 아래의 연산을 취한다.

(여기서, 'A'의 아스키코드 값은 65이며 'a'의 아스키코드 값은 97이다.)

- 현재 문자가 대문자라면(65 이상 90 이하), 해당 값에 32를 더하여 소문자로 변경한다.

- 반대로 현재 문자가 소문자라면(97 이상 122 이하), 해당 값에 32를 빼서 대문자로 변경한다.

 

3) 모든 연산이 끝났다면, 최종적으로 저장된 문자열을 순서대로 출력한 뒤 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
using namespace std;

//백준 2744번 코드
int main() {
	string str;
	cin >> str;
	for (int i = 0; i < str.length(); i++) {
		if (str[i] >= 65 && str[i] <= 90) {
			str[i] += 32;
		}
		else {
			str[i] -= 32;
		}
	}

	cout << str;
}

 

제출 결과

백준 BOJ 2744번 대소문자 바꾸기 문제 C++ 제출 결과

(2022.02.21 백준 2744번 문제 제출 결과)

반응형