![[백준 C++] 4949 : 균형잡힌 세상](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBjfTi%2FbtsKZ71viT4%2FynF6bJSkIcxSyclZ6s9BkK%2Fimg.png)
[백준 C++] 4949 : 균형잡힌 세상CSE/코딩 문제풀이2024. 11. 29. 09:36
Table of Contents
https://www.acmicpc.net/problem/4949
괄호라는 문제가 나오면 필자는 스택이 바로 떠오른다.
그래서 바로 스택으로 구현하였다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
string str = " ";
while (true)
{
bool correct = true;
stack<char> stack;
getline(cin, str);
if (str.compare(".") == 0)
break;
for (int i = 0; i < str.length(); i++)
{
if (str.at(i) == '(')
stack.push('(');
else if (str.at(i) == '[')
stack.push('[');
else if (str.at(i) == ')')
{
if (!stack.empty() && stack.top() == '(')
stack.pop();
else
{
correct = false;
break;
}
}
else if (str.at(i) == ']')
{
if (!stack.empty() && stack.top() == '[')
stack.pop();
else
{
correct = false;
break;
}
}
}
if (correct && stack.empty())
cout << "yes" << '\n';
else
cout << "no" << '\n';
}
return 0;
}
cin의 getline이 아닌 string의 getline을 사용하였다.
시작 괄호 ( '(', '[' )는 판별의 의미가 없기 때문에 바로 스택에 집어넣었고, 닫는 괄호 ( ')', ']' )를 확인할 때 비어있나와 스택의 맨 위가 확인하는 괄호의 종류가 맞나를 확인하면서 구별하였다.
끝난 후에는 스택이 비어있는지와 correct 변수를 이용해 확인하였다.
'CSE > 코딩 문제풀이' 카테고리의 다른 글
[백준 C++] 18110 : solved.ac (0) | 2024.11.30 |
---|---|
[백준 C++] 10773 : 제로 (0) | 2024.11.29 |
[백준 C++] 7568 : 덩치 (0) | 2024.11.28 |
[백준 C++] 11724 : 연결 요소의 개수 (0) | 2024.11.27 |
[백준 C++] 1654 : 랜선 자르기 (0) | 2024.11.26 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!