🚀 들어가며...
- 백준 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 |
댓글