백준 & 프로그래머스
[프로그래머스] Lv.2 올바른 괄호 C++ _ <더 간단한 풀이>
minjgziii
2023. 7. 7. 14:59
📍 문제
📍 풀이
- 자료구조 스택 활용
- '(' 를 담을 stack<char> open 선언
올바른 괄호가 아닌 조건 2가지
1) ')' 가 들어왔는데 스택이 비어있는 경우
2) 마지막에 스택에 데이터가 남아있는 경우
입력 받은 string s의 길이만큼 반복문을 돌며
▶️ '(' 일 때 => 스택에 push
▶️ ')' 일 때 => 스택에서 pop
이 때, 1) 스택이 비어있어서 pop을 하지 못하는 경우 => 올바르지 않은 괄호
반복문을 다 돌고도, 2) 마지막에 스택에 데이터가 남아있는 경우 => 올바르지 않은 괄호
📍 코드
#include <string>
#include <stack>
#include <iostream>
using namespace std;
bool solution(string s)
{
bool answer = true;
stack<char> open;
for (int i{ 0 }; i < s.size(); i++) {
// '(' 일 때
if (s[i] == '(') {
open.push(s[i]);
}
// ')' 일 때
else {
// ')'일 때, pop을 하려고 하는데 스택이 비어있다 -> 올바르지 않은 괄호
if (open.size() == 0) {
return false;
}
else {
open.pop();
}
}
}
// 마지막에 스택에 데이터가 남아있다 -> 올바르지 않은 괄호
if (open.size() != 0) {
answer = false;
}
return answer;
}