
문제 설명
'(' 또는 ')'로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호인지 아닌지 return
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이법
스택을 사용하여 풀 수 있는 문제이다
문자열을 돌면서 문자가 '('이면 스택에 push한다
')'이면 pop하는데, 우선 스택이 비어있는지 아닌지 검사한다
스택이 비어있으면 pop을 할 수 없으므로 바로 break 후 false를 return한다
스택이 비어있지 않지만 맨 위의 값이 ')'이면 괄호가 해당 문자열은 올바르게 짝지어지지 않았다는 것이므로 바로 break 후 false를 return 한다
문자열을 다 돈 후에 스택에 값이 남아있다면, 이 또한 해당 문자열이 올바르게 짝지어지지 않았다는 것이므로 false를 return 한다
소스 코드
#include <string>
#include <iostream>
#include <stack>
using namespace std;
bool solution(string s)
{
bool answer = true;
stack<char> st;
for (char c : s) {
if (c == '(')
st.push('(');
else
{
if (st.empty()) {
answer = false;
break ;
}
else if (st.top() == ')')
{
answer = false;
break ;
}
else
st.pop();
}
}
if (!st.empty())
answer = false;
return answer;
}
'Algorithm Study' 카테고리의 다른 글
[프로그래머스] 2단계 - 다음 큰 숫자 (0) | 2023.12.28 |
---|---|
[프로그래머스] 2단계 - 숫자의 표현 (0) | 2023.12.27 |
[프로그래머스] 2단계 - 최솟값 만들기 (0) | 2023.12.27 |
[프로그래머스] 2단계 - JadenCase 문자열 만들기 (0) | 2023.12.27 |
[프로그래머스] 1단계 - 가장 가까운 같은 글자 (0) | 2023.12.26 |