https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
스택을 이용하여 풀었다. 반복문을 돌면서 '(' 이면 글자를 스택에 넣고 ')' 이면 스택에서 글자를 빼준다.
이때 스택에 아무것도 없으면 올바른 괄호가 아니기 때문에 false이고 반복문을 다 돈 뒤에 스택에 괄호가 남아있으면 false이다.
#include<string>
#include <iostream>
#include <stack>
using namespace std;
stack<char> pa;
bool solution(string s)
{
bool answer = true;
//(이면 스택에 넣기
for(auto c : s){
if(c=='(')
pa.push('(');
else{
//스택 비어 있으면 false
if(pa.empty())
return answer=false;
//)이면 스택에서 뺴기
pa.pop();
}
}
//스택 남아있으면 false
if(!pa.empty())
return answer = false;
return answer;
}
다른 사람의 풀이
괄호의 종류가 한 종류이기 때문에 스택을 쓸 필요 없이 '('괄호의 개수를 세서 int형을 사용하여 풀이를 해주었다.
스택이 비어 있다 == n이 0이다
스택이 남아있다 == n이 0이상이다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 c++ (0) | 2024.01.08 |
---|---|
[프로그래머스] 프로세스 c++ (0) | 2024.01.06 |
[프로그래머스] 기능개발 c++ (0) | 2024.01.04 |
[프로그래머스] 베스트 앨범 c++ (1) | 2024.01.03 |
[프로그래머스] 의상 c++ (1) | 2024.01.02 |