https://www.acmicpc.net/problem/4949
9012 문제에서 대괄호만 추가 된 버전인 듯 하다
9012번 문제 풀이 링크 첨부
https://5ffthewall.tistory.com/13
답
#include <iostream>
#include <stack>
using namespace std;
int main()
{
string a;
while(1)
{
stack<char> s;
getline(cin, a);
if (a == ".")
break;
for(int j = 0 ; j<a.length() ; j++){
if(a[j]=='(')
s.push('(');
else if (a[j]==')')
if(!s.empty() && s.top()=='(')
s.pop();
else
s.push(')');
else if(a[j]=='[')
s.push('[');
else if(a[j]==']')
if(!s.empty() && s.top()=='[')
s.pop();
else
s.push(']');
}
if(s.empty())
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
while(!s.empty())
s.pop();
}
}
문제 푸는 포인트
- 한 줄을 어떻게 받아 올 것인가 - getline을 쓰면 된다! 반복문으로 getline을 받아오는데 조건식으로 온점이 나오면 끝나게 함
+ getline 함수란?
- 입력된 문자열을 받아오는 함수로 cin과 scanf와 다르게 공백도 받아올 수 있음
char형(cin.getline())과 string형(getline(string)) 두 가지가 있음
728x90
'백준' 카테고리의 다른 글
백준 2178번 C++ (0) | 2023.07.18 |
---|---|
백준 1260번 C++ 배열 사용 (0) | 2023.07.06 |
백준 1935번 C++ 배열 사용 (0) | 2023.07.06 |
백준 9012번 c++ (0) | 2023.06.25 |
백준 2164 c++ (0) | 2023.01.17 |