주어진 문자열이 올바른 괄호로 이루어져있는지 여부를 리턴
올바른 괄호란?
- 열림 괄호('(')가 없이 닫힌 괄호(')')가 나오면 올바르지 않은 괄호
- 열린 괄호는 반드시 짝지어서 닫혀야 함
문자열 s의 길이 : 100,000 이하의 자연수
문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
| 입력 | 출력 |
|---|---|
| "()()" | true |
| ")()(" | false |
- 만약 배열의 첫번째 요소가 닫힘 괄호이면 =>
false리턴open,close변수 선언(초기값 0)- 주어진 문자열의 길이만큼 반복문을 돌리면서
- 배열의
i번째 요소가 열림 괄호이면open에 1을 더해주고,- 아니라면
close에 1을 더해준다- 만약
open의 개수보다close의 개수가 많다면 열리지 않았는데 닫힌 것이므로false를 리턴한다- 반복이 끝나고
open과close가 같다면true리턴, 아니라면false를 리턴한다.
function solution(s){
if (s[0] === ')') return false;
let open = 0;
let close = 0;
for (let i=0; i<s.length;i++){
s[i] === '(' ? open++ : close++;
if(open < close) return false;
}
if (open === close ) return true;
return false;
}
변수를 count 하나만 선언하고
(일때 더해주고)일때 빼주는 풀이도 있다. 이 경우 중간에 count가 음수가 될 경우false를 리턴해주는 방식으로 풀면 된다.