본문 바로가기

코딩 소양/알고리즘 문제

[프로그래머스] 올바른 괄호 찾기

이번에 풀어본 문제는 프로그래머스의 올바른 괄호 찾기문제입니다.


오랜만에 알고리즘을 푸니까 감이 하나도 안잡히네요..ㅠㅠ


문제 url은 이거입니당 문제


문제를 설명하자면 소괄호로만 이루어진 문자열이 있는데 이 문자열의 괄호가 올바르게 되어있는지 체크하는 문제입니다!!


막상 처음 봤을때 감이 하도 안잡혀서 뭘까...하다가 stack, queue로 푸니까 금방 풀더라구요..ㅎㅎ


풀이법은 ’(‘가 나올때만 push를 해주고 ‘)’를 다시 만나면 pop해주는 방법!을 사용했습니다.


물론 예외처리로 “))))))”이런 경우도 생각해야겠죠? 그래서 변수 하나를 두고 최초 빈 공간이었는지에 대한 지표를 설정해주었어요.


코드는 이렇게~


#include<string> #include <iostream> #include <stack> using namespace std; bool solution(string s) { bool answer = true; stack<char> st; bool initEmpty = true; for(int i=0; i<s.length(); i++) { if(s[i] == '(') { st.push(s[i]); initEmpty = false; } else if(s[i] == ')') { if(st.empty()) return false; st.pop(); } } if(initEmpty) return false; else if(!st.empty()) return false; else if(st.empty()) return true; }


이렇게 간단하게 마무리해보겠습니다~!!! 안녕~