Post List

[BOJ] 백준 9093 단어 뒤집기

[BOJ] 백준 9093 단어 뒤집기


이 문제는 string의 reverse 등을 이용해 풀 수 있지만,
제일먼저 생각이 났던건 STACK을 이용하는 것이었다.
어차피 역순으로 출력하는 것 이므로 자료구조인 스택을 쓰는것이 더 유익하겠다는 판단으로 풀게 되었다.
빈칸을 만나면, 스택의 원소를 모두 pop, 그리고 빈칸이 아닌경우 push 하는 간단한 알고리즘이다.

소스코드 : 

#include 
#include 
#include 
using namespace std;

int main() {
 int n; cin >> n; cin.ignore();
 while (n--) {
  string s;
  getline(cin, s);
  int len = s.length();
  stack v;
  for (int i = 0; i < len; i++) {
   if (s[i] == ' ') {
    while (!v.empty()) {
     cout << v.top();
     v.pop();
    }
    cout << ' ';
   }
   else {
    v.push(s[i]);
   }
  }
  while (!v.empty()) {
   cout << v.top();
   v.pop();
  }
  cout << '\n';

 }
}

댓글