728x90
문제 링크 : https://www.acmicpc.net/problem/
목차
1. 설명
2. 내 코드
3. 문제 풀이 해석 내용
4. 실행 결과
설명
백준 브론즈 2 문제 입니다.
문제명 : 요다
내 코드
#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 line;
getline(cin, line);
int space1 = line.find(' ');
int space2 = line.find(' ', space1 + 1);
string first = line.substr(0, space1);
string second = line.substr(space1 + 1, space2 - space1 - 1);
string rest = line.substr(space2 + 1);
cout << rest << " " << first << " " << second << endl;
}
}
문제 풀이 해석 내용
입력 받을 줄 수
int n;
cin >> n;
cin.ignore();
사용자로부터 처리할 줄의 수 n을 입력받고, cin.ignore()로 버퍼를 비웁니다.
이는 이전 cin에서 남아있는 개행 문자를 제거하기 위함입니다.
문자열 처리 루프
while (n--)
{
string line;
getline(cin, line);
while (n--)을 통해 n개의 줄을 입력받습니다.
각 줄을 getline을 사용하여 line 변수에 저장합니다.
공백 위치 찾기
int space1 = line.find(' ');
int space2 = line.find(' ', space1 + 1);
find 메소드를 사용하여 첫 번째 공백의 위치(space1)와 두 번째 공백의 위치(space2)를 찾습니다.
space1은 첫 번째 단어와 두 번째 단어 사이의 공백을 나타내고, space2는 두 번째 단어와 나머지 부분 사이의 공백을 나타냅니다.
단어 추출
string first = line.substr(0, space1);
string second = line.substr(space1 + 1, space2 - space1 - 1);
string rest = line.substr(space2 + 1);
substr 메소드를 사용하여 세 개의 부분 문자열을 추출합니다:
first: 첫 번째 단어 (첫 번째 공백 이전의 부분).
second: 두 번째 단어 (첫 번째 공백 이후, 두 번째 공백 이전의 부분).
rest: 나머지 문자열 (두 번째 공백 이후의 부분).
결과 출력
cout << rest << " " << first << " " << second << endl;
추출한 문자열을 "나머지 부분", "첫 번째 단어", "두 번째 단어" 순서로 출력합니다.
실행 결과
728x90
'c++' 카테고리의 다른 글
백준 c++ 5524 문제 풀이 (0) | 2025.04.29 |
---|---|
백준 c++ 1009 문제 풀이 (0) | 2025.04.22 |
백준 c++ 33556 문제 풀이 (0) | 2025.04.20 |
백준 c++ 1681 문제 풀이 (0) | 2025.04.19 |
백준 c++ 13420 문제 풀이 (0) | 2025.04.18 |