https://www.acmicpc.net/problem/4949
๋ฌธ์
์ธ๊ณ๋ ๊ท ํ์ด ์ ์กํ์์ด์ผ ํ๋ค. ์๊ณผ ์, ๋น๊ณผ ์ด๋ ๊ทธ๋ฆฌ๊ณ ์ผ์ชฝ ๊ดํธ์ ์ค๋ฅธ์ชฝ ๊ดํธ์ฒ๋ผ ๋ง์ด๋ค.
์ ๋ฏผ์ด์ ์๋ฌด๋ ์ด๋ค ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ดํธ๋ค์ ๊ท ํ์ด ์ ๋ง์ถฐ์ ธ ์๋์ง ํ๋จํ๋ ํ๋ก๊ทธ๋จ์ ์ง๋ ๊ฒ์ด๋ค.
๋ฌธ์์ด์ ํฌํจ๋๋ ๊ดํธ๋ ์๊ดํธ("()") ์ ๋๊ดํธ("[]")๋ก 2์ข ๋ฅ์ด๊ณ , ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๋ ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ์๊ดํธ("(")๋ ์ค๋ฅธ์ชฝ ์๊ดํธ(")")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ๋๊ดํธ("[")๋ ์ค๋ฅธ์ชฝ ๋๊ดํธ("]")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ค๋ฅธ์ชฝ ๊ดํธ๋ค์ ์์ ๊ณผ ์ง์ ์ด๋ฃฐ ์ ์๋ ์ผ์ชฝ ๊ดํธ๊ฐ ์กด์ฌํ๋ค.
- ๋ชจ๋ ๊ดํธ๋ค์ ์ง์ 1:1 ๋งค์นญ๋ง ๊ฐ๋ฅํ๋ค. ์ฆ, ๊ดํธ ํ๋๊ฐ ๋ ์ด์์ ๊ดํธ์ ์ง์ง์ด์ง์ง ์๋๋ค.
- ์ง์ ์ด๋ฃจ๋ ๋ ๊ดํธ๊ฐ ์์ ๋, ๊ทธ ์ฌ์ด์ ์๋ ๋ฌธ์์ด๋ ๊ท ํ์ด ์กํ์ผ ํ๋ค.
์ ๋ฏผ์ด๋ฅผ ๋์ ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋ ๊ท ํ์กํ ๋ฌธ์์ด์ธ์ง ์๋์ง๋ฅผ ํ๋จํด๋ณด์.
์ ๋ ฅ
ํ๋ ๋๋ ์ฌ๋ฌ์ค์ ๊ฑธ์ณ์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๊ฐ ๋ฌธ์์ด์ ์๋ฌธ ์ํ๋ฒณ, ๊ณต๋ฐฑ, ์๊ดํธ("( )") ๋๊ดํธ("[ ]")๋ฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ธธ์ด๋ 100๊ธ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
๊ฐ ์ค๋ง๋ค ํด๋น ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๊ณ ์์ผ๋ฉด "yes"๋ฅผ, ์๋๋ฉด "no"๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์คํ์ ์ด์ฉํ๋ค.
- ๊ดํธ๊ฐ ์๋ ์ ๋ค์ ์ ๋ถ else ๋ก continue ์ฒ๋ฆฌ
- ์ด๋ฆฐ ๊ดํธ๋ ๊ทธ๋ฅ push
- ๋ซํ ๊ดํธ๊ฐ ๋ํ๋๋ฉด top๊ณผ ๋น๊ตํ์ฌ ์ฑ๊ณต ๋ฐ ์คํจ ์ฒ๋ฆฌ
์ฐธ๊ณ ๋ก ๋๋ ๋๊ฐ์ง๋ฅผ ๊ณ ๋ คํ์ง ์์ ๋๋ฒ ํ๋ ธ๋ค
(1) stack์ empty๋ฅผ ๊ณ ๋ คํ์ง ์์๊ณ (๋จ์ ์ด๋ฆฐ๊ดํธ๊ฐ ๋จ์์์ผ๋ฉด ์๋จ ๋ฐ๋ผ์ ์คํempty๋ ํ๋์ ์กฐ๊ฑด)
(2) ๋ฌธ์ฅ ํ๋์ ์ฐ์ฐ์ ๋๋ผ๋๋ง๋ค ์คํ์ clear ํ์ง ์์์..
๊ผญ.. ์ฒ๋ฆฌํด์ฃผ์
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <stack>
using namespace std;
stack<char> s;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
while(true) {
bool isRight = true;
string input;
getline(cin, input);
if(input == ".") break;
for(int i=0; i<input.length(); i++){
if(input[i] == '(' || input[i] == '[') s.push(input[i]);
else if (input[i] == ')') {
if(!s.empty() && s.top() == '(') s.pop();
else {
isRight = false;
break;
}
}
else if (input[i] == ']') {
if(!s.empty() && s.top() == '[') s.pop();
else {
isRight = false;
break;
}
}
else continue;
}
// (1)
if(isRight && s.empty()) cout << "yes\n";
else cout << "no\n";
// (2)
while(!s.empty()) s.pop();
}
return 0;
}
/*
*/
'๐ Baaaaaarking > 0x08๊ฐ - ์คํ์ ํ์ฉ (์์์ ๊ดํธ์)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ S2][C++] 2504๋ฒ: ๊ดํธ์ ๊ฐ (0) | 2022.03.06 |
---|---|
[BOJ S4][C++] 10799๋ฒ: ์ ๋ง๋๊ธฐ (0) | 2022.03.06 |
[BOJ S4][C++] ๋ฐฑ์ค 9012๋ฒ: ๊ดํธ (0) | 2022.03.02 |
[BOJ S4][C++] 3986๋ฒ: ์ข์ ๋จ์ด (0) | 2022.03.01 |