백준 알고리즘/Lang-node.js
[백준/node.js] 4949 균형잡힌 세상
Jongung
2023. 1. 9. 00:13
https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다
www.acmicpc.net
- 사용언어 : node.js
- 알고리즘 : 자료구조, 문자열, 스택
- Solved.ac Tier : Silver IV
node.js 코드
1. 문제 정리
스택의 기본 문제인 괄호 문제이다. 문제가 굉장히 간단하다. 각 괄호의 짝이 맞으면 yes를 출력 아니면 no를 출력하면 된다. 왼쪽 괄호만 나올 때, 오른쪽 괄호만 나올 때 같은 예외 처리를 신경 써서 코드를 짜면 해결할 수 있다.
2. 완성 코드
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'ans.txt';
const input = require('fs').readFileSync(filePath).toString().trim().split("\n");
const ans = [];
for(let text of input){
const stack = [];
let isCompare = true;
if(text == ".") break;
for(let i = 0; i < text.length; i++){
if(text[i] == "[" || text[i] == "("){
stack.push(text[i]);
}
else if(text[i] == "]"){
if(stack[stack.length - 1] == "["){
stack.pop();
}
else{
isCompare = false;
break;
}
}
else if(text[i] == ")"){
if(stack[stack.length - 1] == "("){
stack.pop();
}
else{
isCompare = false;
break;
}
}
else if(text[i] == ".") break;
}
if(stack.length > 0 || !isCompare) ans.push("no");
else ans.push("yes");
}
console.log(ans.join("\n"));