-
[๋ฐฑ์ค(BOJ) 4949๋ฒ] ๊ท ํ์กํ ์ธ์ (C++)PS(Problem Solving)/C++ 2022. 1. 20. 22:53๋ฐ์ํ
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/4949
๋ฌธ์ ์ ๋ณด
์ ๋ ฅ
ํ๋ ๋๋ ์ฌ๋ฌ์ค์ ๊ฑธ์ณ์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๊ฐ ๋ฌธ์์ด์ ์๋ฌธ ์ํ๋ฒณ, ๊ณต๋ฐฑ, ์๊ดํธ("( )") ๋๊ดํธ("[ ]")๋ฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ธธ์ด๋ 100๊ธ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ ๋ ฅ์ ์ข ๋ฃ์กฐ๊ฑด์ผ๋ก ๋งจ ๋ง์ง๋ง์ ์ ํ๋(".")๊ฐ ๋ค์ด์จ๋ค.์ถ๋ ฅ
๊ฐ ์ค๋ง๋ค ํด๋น ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๊ณ ์์ผ๋ฉด "yes"๋ฅผ, ์๋๋ฉด "no"๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์คํ์ ํ์ฉํ์ฌ ์์์ ๊ดํธ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์๋ค. ์์์ ๊ดํธ ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ธ๋ก๊ทธ ๋ด ๊ธ์ ํตํด ํ์ธํ ์ ์๋ค.
- ์คํ์ ํ์ฉ(์์์ ๊ดํธ ๊ฒ์ฌ)
์์ค ์ฝ๋
#include <bits/stdc++.h> using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); while (true) { string str; getline(cin, str); if (str == ".") { break; } stack<char> S; bool isValid = true; for (auto c : str) { if (c == '(' || c == '[') { S.push(c); } else if (c == ')') { if (S.empty() || S.top() != '(') { // ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ์ isValid = false; break; } S.pop(); } else if (c == ']') { if (S.empty() || S.top() != '[') { // ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ์ isValid = false; break; } S.pop(); } } if (!S.empty()) { // ๋ชจ๋ ๊ณผ์ ์ ๋๋ธ ํ ์คํ์ ๊ดํธ๊ฐ ๋จ์์์ผ๋ฉด ์ฌ๋ฐ๋ฅด์ง ์์! isValid = false; } if (isValid) { cout << "yes" << '\n'; } else { cout << "no" << '\n'; } } return 0; }
๋ฐ์ํ