https://www.acmicpc.net/problem/17413
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
<와 > 사이에있는 문자열은 큐에 넣어서 그대로 출력, 일반 문자열은 스택에 넣어서 거꾸로 출력했다. 일반 문자열은 시작태그 <를 만나거나 공백, 널문자를 만나면 거꾸로 출력되게 했고 < > 사이의 문자열은 <로 시작해서 >로 끝날때까지 큐에 넣고 그대로 출력했다
코드
// 17413
#include <iostream>
#include <string>
#include <stack>
#include <queue>
using namespace std;
int main(int argc, const char *argv[])
{
string input;
stack<char> st;
queue<char> q;
getline(cin, input);
for(int i=0;i<100001;i++){
if( input[i] == ' ' || input[i] == '<' || input[i] == '\0') {
while(!st.empty()){
cout << st.top();
st.pop();
}
if(input[i] == ' ') cout<< " ";
}
else if(input[i] != ' ') st.push(input[i]);
if(input[i] == '<'){
while(input[i] != '>'){
q.push(input[i]);
i++;
}
q.push('>');
while(!q.empty()){
cout << q.front();
q.pop();
}
}
if(input[i] == '\0')break;
}
return 0;
}
'코딩테스트 연습 > Baekjoon' 카테고리의 다른 글
[Baekjoon] 1929번: 소수 구하기 (c++) (0) | 2022.03.31 |
---|---|
[Baekjoon] 1874번: 스택 수열 (c++) (0) | 2022.03.31 |
[Baekjoon] 17299번: 오등큰수 (C++) (0) | 2022.03.31 |
[Baekjoon] 17298번: 오큰수 (c++) (0) | 2022.03.31 |
[Baekjoon] 17103번: 골드바흐 파티션 (c++) (0) | 2022.03.31 |