728x90
https://www.acmicpc.net/problem/4949
4949๋ฒ: ๊ท ํ์กํ ์ธ์
๋ฌธ์ ์ธ๊ณ๋ ๊ท ํ์ด ์ ์กํ์์ด์ผ ํ๋ค. ์๊ณผ ์, ๋น๊ณผ ์ด๋ ๊ทธ๋ฆฌ๊ณ ์ผ์ชฝ ๊ดํธ์ ์ค๋ฅธ์ชฝ ๊ดํธ์ฒ๋ผ ๋ง์ด๋ค. ์ ๋ฏผ์ด์ ์๋ฌด๋ ์ด๋ค ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ดํธ๋ค์ ๊ท ํ์ด ์ ๋ง์ถฐ์ ธ ์๋์ง ํ๋จํ๋ ํ๋ก๊ทธ๋จ์ ์ง๋ ๊ฒ์ด๋ค. ๋ฌธ์์ด์ ํฌํจ๋๋ ๊ดํธ๋ ์๊ดํธ("()") ์ ๋๊ดํธ("[]")๋ก 2์ข ๋ฅ์ด๊ณ , ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๋ ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค. ๋ชจ๋ ์ผ์ชฝ ์๊ดํธ("(")๋ ์ค๋ฅธ์ชฝ ์๊ดํธ(")")์๋ง ์ง์ ์ด๋ฃฐ ์ ์๋ค. ๋ชจ๋ ์ผ์ชฝ ๋๊ดํธ("[")๋ ์ค๋ฅธ์ชฝ ๋
www.acmicpc.net
โญ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include <stack>
#include <string>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
string s;
stack <char> st1;
while (1) {
getline(cin, s);
//"."๋ฌธ์์ด์ ๋ฐ์ ๊ฒฝ์ฐ ์ข
๋ฃ๋ก ์ฒ๋ฆฌ
if (s == ".") {
break;
}
for (int i = 0; i < s.length(); i++) {
//์ฌ๋ ๊ดํธ (, [๊ฐ ๋ค์ด์ค๋ฉด ์คํ์ push
if (s[i] == '[') {
st1.push(s[i]);
}
else if (s[i] == '(') {
st1.push(s[i]);
}
//๋ซ๋ ๊ดํธ๊ฐ ๋ค์ด์ฌ ๊ฒฝ์ฐ
else if (s[i] == ']') {
//์คํ์ด ๋น์ด์์ผ๋ฉด ์ง์ด ๋ง๋ ์ฌ๋ ๊ดํธ๊ฐ ์์ผ๋ฏ๋ก
if (st1.empty()) {
//No์ถ๋ ฅ ํ ์ข
๋ฃ
cout << "no\n";
break;
}
//์คํ์ top์ด ์ง์ด ๋ง๋ ๊ดํธ์ผ ๊ฒฝ์ฐ
else if(st1.top() == '[') {
//ํด๋น ๊ดํธ๋ฅผ pop
st1.pop();
}
//์คํ์ top์ด ์ง์ด ๋ง๋ ๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ
else {
//'( ]'์์ ์
๋ ฅ์ด๊ธฐ์ No์ถ๋ ฅ ํ ์ข
๋ฃ
cout << "no\n";
break;
}
}
else if (s[i] == ')') {
if (st1.empty()) {
cout << "no\n";
break;
}
else if(st1.top() == '(') {
st1.pop();
}
else {
cout << "no\n";
break;
}
}
//string ๊ฐ ๋ฌธ์์ ํ์์ด ๋๋ฌ๊ณ ์คํ์ด ๋น์ด์๋ค๋ฉด
if ( i ==(s.length() -1) && st1.empty()) {
//๊ดํธ์ ์ง์ด ์ ๋ถ ๋ง์ ๊ฑธ๋ก ํ๋จ, Yes ์ถ๋ ฅ
cout << "yes\n";
}
//string ๊ฐ ๋ฌธ์์ ํ์์ด ๋๋ฌ๋๋ฐ ์คํ์ด ๋น์ด์์ง ์๋ค๋ฉด
else if (i == (s.length() - 1) && !st1.empty()) {
//๊ดํธ์ ์ง์ด ์ ๋ถ ๋ง์ง ์์ ๊ฑธ๋ก ํ๋จ, No ์ถ๋ ฅ
cout << "no\n";
}
}
//๋ค์ ๋ฌธ์์ด ํ๋จ์ ์ํด ์คํ์ ๋น์์ค๋ค
while (!st1.empty()) st1.pop();
}
return 0;
}
๐ ๋ฌธ์ ํ์ด
getline(cin, s) : String ๋ณ์์ ๋์ด์ฐ๊ธฐ๋ฅผ ํฌํจํ ๋ฌธ์์ด์ ๋ฐ๋ ๋ฐฉ๋ฒ
728x90