우당탕탕 개발일기
[javascript] 백준 9012번 괄호 본문
728x90
뭔가 괄호가 우다다다 쏟아져서 살짝 혼미했지만 잘 읽어보니 문제자체는 이해하기가 쉬웠다.
괄호가 여는 괄호[`(`]와 닫는 괄호[`)`]가 짝에 맞게 구성되어있으면 즉, `( )`형태이면 VPS가 되는 것.
짝이 맞는 VPS안에 VPS가 있으면 그것도 VPS가 된다는 말!
문제를 통해 `(`와 `)`의 개수가 동일하면 VPS가 되는 것은 쉽게 알 수 있었지만,
이 문제의 주제인 스택으로 구현하는 방법이 고민되었다.
💡답안
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
const Cnt = Number(input[0]); // T
// i번째 줄의 괄호들 정리
//0번째는 T이므로(=Cnt) i는 1부터 시작
//갯수는 1번~T번까지이므로 i<= T
for (let i = 1; i <= Cnt; i++) {
const bracket = input[i]; //각각의 괄호들
const stack = [];
let result = 'YES'; // 기본 result는 Yes!
// 각 줄의 괄호들의 VPS 여부 판별
for (let j = 0; j < bracket.length; j++) {
if (bracket[j] === '(') {
stack.push(1);
} else { //braket[j] === ')'
// stack에 pop할게 없으면
if (!stack.pop()) {
result = 'NO';
break; //다음 줄의 괄호로 넘어간다!
}
}
}
// 모든 연산 후 작업
// VPS가 되려면 `(`와 `)`의 갯수가 동일해야하므로
// 위의 push, pop을 거치면 0이 되어야한다.
if (stack.length !=== 0) {
result = 'NO';
}
// result가 no로 안바뀌는 경우는 다 기본 yes 출력됨
console.log(result);
}
📍출처
https://www.acmicpc.net/problem/9012
728x90
'What I Learned > Algorithm' 카테고리의 다른 글
[javascript] 백준 1003번 피보나치 함수 (0) | 2022.03.21 |
---|---|
[javascript] 백준 11050번 이항 계수 1 (0) | 2022.03.15 |
[javaScript] 백준 10773번 제로 (0) | 2022.03.07 |
[javascript] 백준 1110 더하기 사이클 (0) | 2022.03.04 |
[javascript] 백준 4948번 베르트랑공준 (0) | 2022.03.02 |