https://school.programmers.co.kr/learn/courses/30/lessons/12909
이 문제는 스택을 사용하면 해결할 수 있다.
문자열의 끝이 ')'인 경우 스택에 삽입한다.
혹은 '('인 경우 스택을 확인한다. 만약 스택이 비어있다면 올바르지 않은 괄호로 판단한다.
스택이 비어있지 않은경우 스택의 top이 ')'인지 확인한다. 만약 ')'이 아니면 올바르지 않은 괄호로 판단한다.
문자열을 모두 순회한 후 스택이 비어있지 않다면 올바르지 않는 괄호로 판단한다.
#include<string>
#include <iostream>
#include <vector>
using namespace std;
bool solution(string s)
{
bool answer = true;
vector<char> v;
while(!s.empty()){
char c = s.back();
s.pop_back();
if(c == ')'){
v.push_back(c);
}
else{
if(v.empty())
return false;
else{
char s = v.back();
if(s == ')')
v.pop_back();
else
return false;
}
}
}
if(!v.empty()) return false;
return true;
}
'Programmers Review' 카테고리의 다른 글
[Lv 2] 멀리 뛰기 (0) | 2024.06.23 |
---|---|
[Lv 2] 숫자의 표현 (0) | 2024.06.23 |
[Lv 2] 다음 큰 숫자 (0) | 2024.06.22 |
[Lv 2] 카카오프렌즈 컬러링북 (0) | 2024.06.16 |
[Lv 2] 2xn 타일링 (0) | 2024.06.16 |