문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
class Stack {
constructor() {
this._arr = [];
}
push(item) {
this._arr.push(item);
}
pop() {
return this._arr.pop();
}
peek() {
return this._arr[this._arr.length - 1];
}
length() {
return this._arr.length;
}
}
function solution(s){
let answer = true;
let counter = 0;
const stack = new Stack();
if(s[0] ===')')
return false;
if(s[s.length -1] ==='(')
return false;
for(let item of s){
stack.push(item);
}
if(stack.length()%2 === 1 || stack.peek() ==='(') {
answer = false;
} else {
while(stack.length() > 0){
let item = stack.peek();
if(item === '(') {
counter--;
}else {
counter++;
}
stack.pop();
if(counter < 0) {
answer = false;
break;
}
}
}
return answer;
}
'Algorithms > Examples ( *ex : ACM)' 카테고리의 다른 글
프린터 (0) | 2022.09.13 |
---|