Deff_Dev
[백준] 4949번 균형잡힌 세상 (C++) 본문
문제
풀이
getline 함수를 이용하여, 공백을 포함하여 입력을 받은 뒤, Stack을 이용하여 균형잡인 문자열인지 판단했다.
이때, stack에 임의 값 '0'를 삽입(empty 처리를 피하기 위해)하고 모든 연산이 끝난 뒤, stack의 크기가 1일 경우에 yes, 아니라면 no를 출력한다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
while(true)
{
string input;
getline(cin, input);
if(input == ".")
break;
stack<char> stack;
stack.push('0');
for(int i = 0; i < input.length(); i++)
{
char c = input[i];
if(!(c == '(' || c == ')' || c == '[' || c == ']')) continue;
if((c == ')' && stack.top() == '(') || (c == ']' && stack.top() == '[')){
stack.pop();
}
else
{
stack.push(c);
}
}
string output = stack.size() == 1 ? "yes\n" : "no\n";
cout << output;
}
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 2504번 괄호의 값 (C++) (0) | 2025.01.13 |
---|---|
[백준] 10799번 쇠막대기 (C++) (0) | 2025.01.09 |
[백준] 1021번 회전하는 큐 (C++) (0) | 2025.01.04 |
[백준] 2164번 카드 2 (C++) (0) | 2024.12.25 |
[백준] 18258번 큐 2 (C++) (0) | 2024.12.19 |