<문제 2> 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어"()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
<괴발개발한글코딩>
() 이건세트
만약 열린괄호가 첫번쨰에 위치하면 닫힌괄호는 그다음에 위치해야 한다
(())
만약 열린괄호가 연속으로 두개 있으면 닫힌괄호도 연속으로 두개 있어야 한다
()()()((()))
만약 열린괄호가 n개 있으면 닫힌 괄호는 열린괄호뒤에 n개 위치해야 한다 - true
열린괄호는 항상 닫힌괄호 앞에 위치해야한다 (닫힌괄호는 열린괄호앞에 있으면 안된다)
(닫힌괄호가 앞에 있으면 false)
<정리>
true가 되는 전제조건
1. 열린괄호는 항상 닫힌괄호앞에 존재해야 한다
2. 열린괄호가 n개라면 닫힌괄호도 n개가 있어야한다
이 두가지 전제조건이 성립되지 않는다면
false
if(열린괄호가 항상 닫힌 괄호앞에 존재하고 & 열린괄호개수 ==닫힌괄호개수){
트루 }
elseif
둘중에 하나라도 충족하지 않는다면 false
1번이 성립되려면 왼쪽부터 읽는다고 할 때, 읽는 순간
열린괄호는 닫힌괄호보다 적으면 안된다.
열린괄호(+)와 닫힌괄호(-)를 합쳤을 때 0이 되어야 한다
( )를 센다고 할 때,
" (( )) " << 이걸 센다고 할 때 문자열 s
위치(i) ( ) 전체카운트
----------------------------------------- -----------------
0 1 0 1
1 1 0 2
2 2 - 1 1
3 2 -2 0
-----------------------------------------------------------
int count=0;
for(s자의 문자열만큼 돌면서){
...
}