[백준 BOJ] 4458번 첫 글자를 대문자로 (C++/cpp)

2022. 2. 1. 16:40PS (Program Solving)/BOJ (백준)

문제 설명

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

 

4458번: 첫 글자를 대문자로

첫째 줄에 줄의 수 N이 주어진다. 다음 N개의 줄에는 문장이 주어진다. 각 문장에 들어있는 글자의 수는 30을 넘지 않는다. 모든 줄의 첫 번째 글자는 알파벳이다.

www.acmicpc.net

백준 BOJ 4458번 첫 글자를 대문자로 문제 사진

 

접근 방법 - 문자열을 이용한 기본 연산 문제

백준의 4458번 문제는 문자열을 주로 다루어 해결해야 하는 문제이다.

해당 문제에선 각 테스트 케이스의 문자열의 첫 글자가 소문자일 시 대문자로 변경해야 한다.

예제 입력을 보다시피, 이 문제에선 숫자랑 문자열을 함께 입력받는데 cpp의 경우엔 이 점을 주의해야 한다.

string 헤더를 사용하여 함께 입력을 받으면 입력받는 데에 차질이 생기기 때문이다.

이러한 경우엔 cin.ignore()문을 이용하여 입력의 오류를 없애야 한다. 사용방법은 아래에서 설명하고자 한다.

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

 

코드의 실행 순서

1) 테스트 케이스 수(n)를 입력받는다.

 

2) cin.ignore()을 사용하여 버퍼를 비운다.

(이 구문을 사용하지 않을 시 1) 입력 다음의 "공백"이 3) 입력에서 받아질 수 있다.)

 

3) 문자열을 한 줄씩 입력받는다.

 

4) 문자열의 첫 글자가 소문자일 시, 아스키코드 연산을 통하여 대문자로 변경한다.

 

5) 변경이 완료되면, 해당 문자열을 출력한다.

 

6) 3) ~ 5)를 통해 모든 테스트 케이스가 수행되면, 실행 종료한다.

반응형

 

성공한 코드

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

//백준 4458번 코드
int main() {
	int n;
	cin >> n;
	cin.ignore();

	string ch;
	for (int i = 0; i < n; i++) {
		getline(cin, ch);
		if (ch[0] >= 'a' && ch[0] <= 'z') {
			ch[0] -= 32;
		}
		cout << ch << endl;
	}
}

 

제출 결과

백준 BOJ 4458번 첫 글자를 대문자로 문제 C++ 제출 결과

(2022.01.08 백준 4458번 문제 제출 결과)

반응형