문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12909
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.
문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
문제 입출력 예)
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
문제 풀이
- push, pop 으로 풀 수 있지만, 다른 방법으로 풀이하였다.
- count 로 "("괄호가 삽입 시 +1 , ")"괄호가 삽입 시 -1를 해준다.
- count의 값이 음수가 될 수 없다. ")" 괄호가 먼저 들어올 수 없기 때문에.
- count의 결과가 0이 나올 경우, 정상적인 괄호이다.
- count는 반드시 count>=의 조건이 성립되야 한다.
- "("괄호 시 count ++
- ")"괄호 시 count --
- 결과를 return 해준다.
#include<string>
#include <iostream>
using namespace std;
bool solution(string s)
{
int count = 0;
bool answer = true;
for(auto &a : s){
(a==40)?count++:count--;
if(count < 0){
break;
}
}
count==0?answer=true:answer=false;
return answer;
}
리뷰
- 쉬운 문제였다.
'알고리즘 공부 > 프로그래머스 [C++]' 카테고리의 다른 글
프로그래머스 : 다음 큰 숫자 [C++] (0) | 2022.10.27 |
---|---|
프로그래머스 : 숫자의 표현 [C++] (0) | 2022.10.27 |
프로그래머스 : 피보나치 수 [C++] (0) | 2022.10.27 |
프로그래머스 : 중간 리뷰 (4일차) [C++] (0) | 2022.10.27 |
프로그래머스 : 최솟값 만들기 [C++] (0) | 2022.10.27 |
댓글