Deff_Dev

[백준] 4949번 균형잡힌 세상 (C++) 본문

코딩테스트/백준

[백준] 4949번 균형잡힌 세상 (C++)

Deff_a 2025. 1. 7. 11:30

문제

풀이

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