Algorithm 💫/Problem Solving
[프로그래머스 ] 올바른 괄호/ C++, python3 / level2
돼지고기맛있다
2021. 8. 26. 20:30
반응형
✏️ 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12909?language=python3
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은
programmers.co.kr
✏️ 문제 설명
✏️ 풀이
이번 문제는 input으로 들어온 string이 올바른 괄호로 짝 지어져 있는지에 대해서 확인하는 함수이다.
스택으로 간단하게 풀 수 있는데! 간단하게 원리를 말하자면
"만약에 스택에 가장 위에 있는 애가 ( 이고 이제 들어갈 애가 ) 이라면 스택에 가장 위에 있는 ( 를 pop 해줘!"
"그리고 스택이 비어있거나 위의 조건에 성립하지 않는다면 계속 스택에 쌓아주면돼 :)"
만약 모든 괄호가 짝이 맞는다면 마지막 스택은 비어있을 것이고 짝이 맞지 않는다면 스택은 비어있지 않다는 것으로 true or false를 return 해주면 된다!
✏️ 코드(python3)
def solution(s):
answer = True
stk=[]
for p in s:
if not stk:
stk.append(p)
continue
if stk[-1] == "(" and p == ")" :
stk.pop()
continue
stk.append(p)
return not stk
✏️ 코드(C++)
#include <bits/stdc++.h>
using namespace std;
bool solution(string s)
{
bool answer = true;
stack<char> stk({s[0]});
for(int i=1;i<s.size();i++){
if(!stk.empty() && stk.top() == '(' && s[i] ==')'){
stk.pop();
continue;
}
stk.push(s[i]);
}
return stk.empty();
}
반응형