-
[BOJ]백준 17413번: 단어 뒤집기 2Problem Solving/BOJ(백준) 2021. 1. 30. 19:18
단어 뒤집기 문제이다
사실 파이썬으로 split이랑 reverse써서 풀려고 했는데 내맘대로 안돼서 걍 C++ 스택으로 풀었다
'<': 괄호가 열리면 state변수를 1로 바꿔준다 + 그대로 출력
'>': 괄호가 닫히면 state변수를 0으로 바꿔준다 + 그대로 출력
이외의 문자
- state가 1일 때: 괄호 안의 문자라는 뜻. 그대로 출력
- state가 0일 때: 괄호 밖의 문자라는 뜻. 스택에 push (여는 괄호가 나왔거나, 스페이스가 나왔거나, 문장이 끝났을 때에는 스택의 모든 문자를 pop하면서 순서대로 출력한다.)
#include <iostream> #include <string> #include <stack> using namespace std; stack<char> s; char str[100005]; bool b; int main() { //freopen("input.txt", "r", stdin); scanf("%[^\n]s", str); for (char c : str) { switch (c) { case '<': while (!s.empty()) { cout << s.top(); s.pop(); } b = 1; cout << c; break; case '>': b = 0; cout << c; break; case ' ': if (b) cout << c; else { while (!s.empty()) { cout << s.top(); s.pop(); } cout << c; } break; case '\0': break; default: if (b)cout << c; else s.push(c); } } while (!s.empty()) { cout << s.top(); s.pop(); } return 0; }
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]백준 1405번: 미친 로봇 (0) 2021.02.07 [BOJ]백준 16931번: 겉넓이 구하기 (0) 2021.02.05 [BOJ]백준 1442번: 벽 부수고 이동하기 2/BFS (0) 2021.01.20 [BOJ]백준 1600번: 말이 되고픈 원숭이/BFS (0) 2021.01.20 [BOJ]백준 11723번: 집합/Bitmask (2) 2021.01.18