반응형
https://www.acmicpc.net/problem/9093
본 문제는 2001 ICPC Asia Regional Taejon PA번 문제다. 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 문제다. stack을 이용하여 풀 수 있다. 코드에 보면 string s에 '\n'을 추가하였다. 이유는 문제에서 ' '을 기준으로 단어가 뒤집히는데 문자열 마지막은 ' '가 아니므로 단어가 뒤집히지 않는다. 그렇기 때문에 한 번 더 while문을 사용해야 한다. 그러나 while을 한번 더 사용하면 코드가 멋이 없어진다. (??? : "while을 한번 더 쓰면 멋이 없기 때문에 '\n'을 추가하였다." - 2020. 01. 백준 오프라인 강의 중) 따라서, 단어를 뒤집는 기준을 ' '와 '\n'로 하여 멋있는 코드를 작성하였다.
- ' '와 '\n'이 아닐 경우, stack에 push
- 맞으면 출력 후 pop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int t;
cin >> t;
cin.ignore();
while (t--) {
string s = "";
getline(cin, s);
s += ' ';
stack<char> st;
for (int i = 0; i < s.size(); i++) {
if (s[i] == ' ') {
while (!st.empty()) {
cout << st.top();
st.pop();
}
cout << s[i];
}
else st.push(s[i]);
}
}
}
|
cs |
반응형
'백준' 카테고리의 다른 글
[백준 1874] 스택 수열, C++ (0) | 2020.01.08 |
---|---|
[백준 9012] 괄호, C++ (0) | 2020.01.08 |
[백준 10828] 스택, C++ (0) | 2020.01.08 |
[백준] 7569 - 토마토, C++ (0) | 2020.01.08 |
[백준 2468] 안전 영역, C++ (0) | 2020.01.07 |
댓글