c++

백준 c++ 5363 문제 풀이

psb08 2025. 4. 21. 07:44
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