c++

백준 c++ 5524 문제 풀이

psb08 2025. 4. 29. 08:05
728x90
반응형

문제 링크 : https://www.acmicpc.net/problem/5524

목차

1. 설명

 

2. 내 코드

 

3. 문제 풀이 해석 내용

 

4. 실행 결과

 

설명

백준 브론즈 4 문제 입니다.

문제명 : 입실 관리

 

내 코드

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    std::cout.tie(NULL);

    int n;
    cin >> n;
    cin.ignore();

    while (n--) 
    {
        string name;
        getline(cin, name);

        transform(name.begin(), name.end(), name.begin(), ::tolower);

        cout << name << '\n';
    }

}

 

문제 풀이 해석 내용

 

입력 받을 문자열 개수

int n;
cin >> n;
cin.ignore();

int n; cin >> n;: 사용자로부터 소문자로 변환할 문자열의 개수 n을 정수로 입력받습니다.
cin.ignore();: cin >> n은 정수만 읽고 마지막에 입력된 개행 문자(\n)는 입력 버퍼에 남겨둡니다.

다음 getline 함수는 이 개행 문자를 읽고 빈 문자열로 인식할 수 있습니다. 

cin.ignore()는 입력 버퍼에 남아있는 문자를 무시하여 이런 문제를 방지합니다.

 

 

문자열 처리 루프 

while (n--)
{
    string name;
    getline(cin, name);

while (n--): n번 반복하는 루프입니다. 

루프를 한 번 돌 때마다 n의 값이 1씩 줄어들어 0이 되면 루프가 종료됩니다.
string name; getline(cin, name);: getline 함수를 사용하여 표준 입력(cin)으로부터 

한 줄 전체를 읽어 name 변수에 저장합니다. 

getline은 공백 문자를 포함하여 줄 끝까지 읽습니다.

 

 

소문자 변환

transform(name.begin(), name.end(), name.begin(), ::tolower);

transform 함수는 특정 범위의 요소에 함수를 적용하여 결과를 다른 범위에 저장합니다.
name.begin(), name.end(): name 문자열 전체를 범위로 지정합니다.
name.begin(): 변환된 결과를 다시 name 문자열의 시작 위치부터 저장하겠다는 의미입니다. 즉, 원래 문자열을 덮어씁니다.
::tolower: 각 문자에 적용될 함수입니다. 이 함수는 문자를 소문자로 변환합니다. 

 

 

결과 출력

cout << name << '\n';

 

소문자로 변환된 name 문자열을 출력하고, '\n'을 사용하여 줄바꿈을 합니다.

 

 

실행 결과

 

'c++' 카테고리의 다른 글

백준 c++ 14724 문제 풀이  (0) 2025.05.01
백준 c++ 20053 문제 풀이  (0) 2025.04.30
백준 c++ 1009 문제 풀이  (0) 2025.04.22
백준 c++ 5363 문제 풀이  (0) 2025.04.21
백준 c++ 33556 문제 풀이  (0) 2025.04.20