초보 개발자의 성장 일기

[node.js] 백준 9012번 괄호 본문

Development/Algorithm

[node.js] 백준 9012번 괄호

YUNA 2024. 2. 14. 22:12

1. 문제

 

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

 

2. 풀이 방법

 

첫번째 원소는 input의 행의 길이이다. shift로 이 원소를 배열에서 빼고, len변수에 담는다.

그리고 결과를 넣어줄 새 배열을 선언한다.

for 반복문을 통해서 각 행을 지정해줄 i를 선언하고 for ...of를 사용하여 각각의 행안에 있는 원소가 '('일 경우 1을 더하고 아닌경우 즉, ')'일 경우에는 -1을한다.

cnt의 결과가 0일 경우는 YES로, 0보다 작을 경우 break해서 멈추고 NO로 결과를 넣어줄 배열에 push로 넣어준다.

개행을 해서 결과를 합쳐주고 결과를 출력한다.

 

 

 

3. 코드

 

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

const len = input.shift();
const result = [];

for (let i = 0; i < len; i++) {
  let cnt = 0;

  for (let s of input[i]) {
    cnt += s === '(' ? 1 : -1;

    if (cnt < 0) break;
  }

  result.push(cnt === 0 ? 'YES' : 'NO');
}

console.log(result.join('\n'));