https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다
www.acmicpc.net
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
while (true)
{
string str;
getline(cin, str);
stack<char>a;
if (str[0] == '.') break;
for (int i = 0; i < str.length() - 1; i++)
{
if (str[i] == '(')
{
a.push('(');
}
if (str[i] == '[')
{
a.push('[');
}
if (str[i] == ']')
{
if (!a.empty() && a.top() == '[')
{
a.pop();
}
else
{
printf("no\n"); break;
}
}
if (str[i] == ')')
{
if (!a.empty() && a.top() == '(')
{
a.pop();
}
else
{
printf("no\n"); break;
}
}
if (a.empty() && i == str.length() - 2)
{
printf("yes\n");
}
else if (!a.empty() && i == str.length() - 2)
{
printf("no\n");
}
}
}
}
getline으로 공백을 포함한 값을 입력 받아 값을 처리했으며 ( [ 가 나오면 저장했다가 [ 뒤에 ) 가 나오거나 (뒤에 ] 가 나오면 실패 처리했다.
+
처음에 getline없이 string만으로 처리하려고 하니 예시의 마지막에 ' .' 과 '.' 의 구분하지 못해 무진장 틀리다가 getline을 쓰자마자 맞췄다.
매우 화남
'코딩 > 문제' 카테고리의 다른 글
백준 18258 큐2 (0) | 2022.06.28 |
---|---|
백준 1874 스택 수열 (0) | 2022.06.28 |
백준 9012 괄호 (0) | 2022.06.28 |
백준 10773 제로 (0) | 2022.06.28 |
백준 10828 스택 (0) | 2022.06.28 |