본문 바로가기
알고리즘/백준

[백준 9093] 단어 뒤집기 (cpp, stack)

by RoJae 2021. 12. 12.

🚀  들어가며...

  • 백준 9093번 문제 풀이다.
  • 단순한 구현 문제 (stack)

 

🔗  문제

https://www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net

 

 

💌 소스코드

 

1.  ' ' 혹은 '\n' 인 경우 

  • 스택 전체 pop

2. 그 외의 경우

  • 스택에 push

2. getline 사용

  • 입력 버퍼의 차이에 유의하여, 한번 비워준다.

 

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

using namespace std;

int main(void){
    int n;
    cin >> n;
    
    // getline과 cin을 함께 사용. 
    // cin은 개행문자 변수에 담지 않음 -> 입력버퍼에 남아서, 이후 getline에 영향을 준다.
    cin.ignore();       
    
    while(n--){
        stack<char> st;
        string str = "";
        getline(cin, str);
        str += ' ';

        for(int i=0; i<str.size(); i++){
            if(str[i] == ' '){
                while(!st.empty()){
                    cout << st.top();
                    st.pop();
                }
                cout << str[i];
            }
            else{
                st.push(str[i]);
            }
        }
    }

}

 

🙋🏻‍♂️ 후기

간만의 cpp에 getline과 cin의 입력버퍼 처리를 까먹고 있어서

자꾸 틀려서 약간 해매였다.

 

회복 중.

 

 

 

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1874] 스택 수열 (cpp, stack)  (0) 2021.12.19
[백준 9012] 괄호 (cpp, stack)  (0) 2021.12.12
[백준 10828] 스택 (cpp, stack)  (0) 2021.12.12
[백준 1764] 듣보잡  (0) 2019.05.17

댓글