스쳐가는비
devtravel
스쳐가는비
전체 방문자
오늘
어제
  • 분류 전체보기 (108)
    • 🎵 Daily (0)
    • 📚 Computer Science (11)
      • Algorithm (9)
      • Design Pattern (2)
    • 🔥 Programming (23)
      • C# (3)
      • C++ (5)
      • WPF (0)
      • Python (1)
      • OpenCV (9)
      • ML & DL (5)
    • 🔥 Web (13)
      • HTML (6)
      • JavaScript (7)
    • 📌 Tool (2)
      • Git (2)
      • Etc (0)
    • 📖 Certificate (10)
      • 컴활 1급 (2)
      • SQL 개발자 (2)
      • 리눅스 마스터 (0)
      • 정보처리기사 (0)
      • 사무자동화산업기사 (0)
      • ADsP (6)
    • 💻 OnlineJudge (49)
      • Baekjoon (49)
      • GoormEdu (0)
GitHub Contribution
Loading data ...

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
스쳐가는비

devtravel

[백준 / BOJ] C++ 4949 균형잡힌 세상
💻 OnlineJudge/Baekjoon

[백준 / BOJ] C++ 4949 균형잡힌 세상

2022. 8. 18. 11:10

백준  - 단계별로 풀어보기 [4949]

https://www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다

www.acmicpc.net

풀이

자료구조에서 스택의 기본적인 괄호 예제입니다. 

입력받은 문자열에서 괄호만 찾아서 짝이 맞는지 확인 후 출력하는 간단한 문제입니다.

Code

#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main() 
{
	while (true)
	{
		stack<char> _stack;
		bool result = true;

		string s;

		getline(cin, s);

		if (s[0] == '.')
			break;

		// 마지막 글자는 . 이니까 - 1
		for (int i = 0; i < s.length() - 1; i++) 
		{
			if (s[i] == '(') _stack.push(s[i]);
			if (s[i] == '[') _stack.push(s[i]);
			
			/*
			* 닫는 괄호가 나오지만, stack에 여는 괄호가 없을경우 false
			* 스택에 쌓인 가장 위 데이터가 짝이 안맞으면 false
			*/ 
			if (s[i] == ')') 
			{
				if (_stack.empty() || _stack.top() == '[') result = false;
				else _stack.pop();
			}
			if (s[i] == ']')
			{
				if (_stack.empty() || _stack.top() == '(') result = false;
				else _stack.pop();
			}
		}

		if (_stack.empty() && result) cout << "yes" << endl;
		else cout << "no" << endl;
	}
}

'💻 OnlineJudge > Baekjoon' 카테고리의 다른 글

[백준 / BOJ] C++ 2164 카드 2  (0) 2022.08.22
[백준 / BOJ] C++ 18258 큐 2  (0) 2022.08.19
[백준 / BOJ] C++ 9012 괄호  (0) 2022.08.17
[백준 / BOJ] C++ 10773 제로  (0) 2022.08.16
[백준 / BOJ] C++ 24416 피보나치 수열 1  (0) 2022.08.03
    '💻 OnlineJudge/Baekjoon' 카테고리의 다른 글
    • [백준 / BOJ] C++ 2164 카드 2
    • [백준 / BOJ] C++ 18258 큐 2
    • [백준 / BOJ] C++ 9012 괄호
    • [백준 / BOJ] C++ 10773 제로
    스쳐가는비
    스쳐가는비
    The biggest risk is not taking any risk

    티스토리툴바