풀이
[문제 풀이]
이 문제는 stack을 활용해도 되지만 단순히 개수를 세도 쉽게 풀 수 있는 문제다.
'('의 괄호가 나오면 괄호가 시작했다는 count를 1 증가시키고 ')' 괄호가 나오면 괄호가 끝났다는 의미에서 count를 1 감소시킨다.
이때, count가 0보다 작은 값이 되면, 이는 올바른 괄호가 아니라는 의미이므로 false를 return 하면 된다.
그리고 모든 string의 탐색이 끝난 후에 count가 0이 아니라면 '('의 괄호가 ')' 괄호의 개수보다 많다는 의미이므로 false를 return 하면 된다.
만약 두 경우에 해당하지 않는다면 true를 return 하면 된다.
[아이디어 정리]
- '(' 괄호가 나오면 count를 1 증가시키고 ')'의 괄호가 나오면 count를 1 감소시킨다.
- 도중에 count가 0보다 작아지는 경우가 있다면, false를 return 하고, 모든 탐색이 끝난 후에 count가 0이 아니라면 false를 return한다.
- 위 경우에 해당하지 않으면 true를 return한다.
Code
#include<string>
#include <iostream>
using namespace std;
bool solution(string s)
{
bool answer = true;
int stCnt=0;
for (int i=0; i<s.length(); i++)
{
if (s[i]=='('){
stCnt+=1;
}
else{
stCnt-=1;
if (stCnt<0){
return false;
}
}
}
if (stCnt!=0){
return false;
}
return true;
}
문제를 잘 읽어보면 개수를 세는 것 만으로도 쉽게 풀 수 있는 문제였다.
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 의상 (0) | 2024.06.07 |
---|---|
[프로그래머스/Python] 주식가격 (0) | 2024.05.19 |
[프로그래머스/C++] 숫자 블록 (0) | 2024.05.06 |
[프로그래머스/C++] 교점에 별 만들기 (0) | 2024.05.04 |
[프로그래머스/C++] 양궁대회 (0) | 2024.05.03 |