반응형
✏️ 문제 링크
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();
}
반응형
'Algorithm 💫 > Problem Solving' 카테고리의 다른 글
[프로그래머스 / python3 / level2] 스킬트리 (0) | 2021.08.27 |
---|---|
[프로그래머스 / python3 / level2] 이진 변환 반복하기 (0) | 2021.08.27 |
[프로그래머스 / python3 / level2] [카카오 3차] 방금그곡 (0) | 2021.08.26 |
[백준 4963번 섬의 개수(DFS)/ C++] (0) | 2021.01.26 |
[백준 10451번 순열 사이클(DFS)/ C++] (0) | 2021.01.22 |
댓글