Fascination
article thumbnail

[문제]

 

12605번: 단어순서 뒤집기

스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만

www.acmicpc.net

 

 

[문제 풀이]

- 단어의 개수가 5로 고정이지만 우선 입력 받는 것으로 처리

- 문장을 입력받고 토큰 단위로 stack에 저장

- pop하여 단어 순서를 뒤집음

 

 

[코드]

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

class Word{
public:
    string words;
};

int main() {
    Word stack[52];
    int top = -1;
    string str;
    int n;
    cin>>n;
    cin.ignore();

    for(int i=0;i<n;i++) {// t는 5로 고정이긴 함
        getline(cin, str);
        //받은 입력을 C의 형식으로 char buffer에 넣어주기 위한 변수선언
        char* str_buff = new char[52];

        //받은 입력 string a를 str_buff에 넣어준다.
        strcpy(str_buff, str.c_str());

        //strtok이 포인터를 반환하기때문에 tok을 포인터로 선언. 띄어쓰기를 기준으로 나눔
        char* tok = strtok(str_buff, " ");

        //tok을 살피며 끝이 아니라면 계속 진행한다.
        while (tok != nullptr) {

            //stack에 값을 추가한다.
            stack[++top].words = string(tok);

            //띄어쓰기를 기준으로 나누어 다음 문자를 tok에 저장
            tok = strtok(nullptr, " ");
        }
        cout<<"Case #"<<i+1<<": ";
        while(top>-1){
            cout<<stack[top--].words<<" ";
        }
        cout<<endl;
    }
    return 0;
}

 

 

[채점 결과]

* 다음에는 토큰 단위로 입력받는 것을 c++에서 간단하게 작성할 수 있는 방법을 공부해야할 듯!

'CODE > BOJ' 카테고리의 다른 글

[C++] BOJ 2959 : 거북이  (0) 2021.09.17
[C++] BOJ 2752 : 세수정렬  (0) 2021.09.17
[C++] BOJ 11279 : 최대힙  (0) 2021.09.16
[C++] BOJ 1158 : 요세푸스 문제  (0) 2021.09.16
[C++] BOJ 17608 : 막대기  (0) 2021.09.15
profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!