문제 링크 : 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 |