[JavaScript] 9012 | 백준

유인학·2022년 6월 19일
0

[JS] Algorithm(백준)

목록 보기
82/82
post-thumbnail

📄 문제

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인
‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다.
그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호
문자열(Valid PS, VPS)이라고 부른다.
한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다.
만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다.
그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다.
예를 들어 “(())()”와 “((()))” 는 VPS 이지만
“(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 

여러분은 입력으로 주어진 괄호 문자열이 VPS 인지 아닌지를 판단해서
그 결과를 YES 와 NO 로 나타내어야 한다. 

⌨ 예제 입력

6
(())())
(((()())()
(()())((()))
((()()(()))(((())))()
()()()()(()()())()
(()((())()(

📺 예제 출력

NO
NO
YES
NO
YES
NO

⌨ 예제 입력

3
((
))
())(()

📺 예제 출력

NO
NO
NO

🚩solution

const input = require('fs')
  .readFileSync('/dev/stdin')
  .toString()
  .trim()
  .split('\n');

let str = '';

function isTrue(s) {
  let count = 0;
  for (let j = 0; j < s.length; j++) {
    count += s[j] === '(' ? 1 : -1;
    if (count < 0) return false;
  }
  if (count === 0) return true;
  else return false;
}

for (let i = 1; i < input.length; i++) {
  str += isTrue(input[i].split('')) ? 'YES\n' : 'NO\n';
}

console.log(str);
profile
'유'발자!

0개의 댓글