백준 #9093 단어 뒤집기 C++

2021. 5. 1. 00:25백준 문제풀이

반응형

 

백준 9093 단어 뒤집기 문제이다. 랭크는 브론즈1.(브론즈 1이면서 실버 문제보다 까다롭다)

 

이 문제 역시 스택 자료구조를 활용해서 해결하는 문제이다.

 

문제에서 알 수 있듯, 문장 전체를 Revese 하는 것이 아닌, 각 단어마다 reverse를 해줘야 해서 구현하기 귀찮은 문제이다.

 

하지만 스택과 문자열을 적절히 활용하면 해결 가능하다.

 

아래는 c++ 코드 전문이다.

 

#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main() {
    int testCase;
    cin >> t;
    cin.ignore();
    while (testCase--) {
        string str = " ";
        getline(cin, str);
        str += ' ';
        stack<char> stack;
        for (int i = 0; i < str.size(); i++) {
            if (str[i] == ' ') {
                while (!stack.empty()) {
                    cout << stack.top();
                    stack.pop();
                }
                cout << str[i];
            }
            else stack.push(str[i]);
        }
    }
}


 

먼저 testCase 변수에 앞으로 주어질 문장이 몇 개인지 입력받아 할당한다.

 

getline() 함수를 통해서 주어진 문자열을 모두 string 변수 str에 저장한다. 

이때, cin 말고 getline()을 사용하는 이유는 공백까지 모두 처리하기 위함이다.

 

그후 stack자료구조를 가진 stack 변수를 선언하고 for문을 돌린다.

 

만약 str[i]가 공백일 경우, 현재 스택에서 가장 위에 있는 문자를 반환한다.

 

이 문제에서 생각해야 할것은 굳이 입력받은 문자열을 뒤집어 새로운 변수에 할당하지 않고

 

곧바로 출력을 한다는 점이다. 

 

파이썬으로 해결할 경우 조금 더 쉬운 방법으로 가능할 것 같다.

반응형

'백준 문제풀이' 카테고리의 다른 글

백준 #2675 문자열 반복 c, python  (0) 2021.05.10
백준 #1158 요세푸스 문제 c++  (0) 2021.05.03
백준 #1406 에디터 c++  (0) 2021.05.02
백준 #9012번 괄호 c++  (0) 2021.05.01
백준 #10828 스택 c++  (0) 2021.04.30