미누에요

[백준 4949번] 균형잡힌 세상 - JavaScript 본문

알고리즘

[백준 4949번] 균형잡힌 세상 - JavaScript

미누라니까요 2025. 1. 21. 10:30
728x90
반응형
SMALL

 

이 문제는 학부 자료구조 시간에 배웠던 내용인듯하다.

스택(Stack)을 사용하여 괄호를 검사하는 문제인데, 간단히 설명하자면 문장을 순서대로 토큰으로 탐색하면서 여는 괄호('(', '[')가 오면 스택에 저장하고(push), 닫는 괄호(')', ']')가 오면 스택에 있던 값을 꺼내(pop) 여는 괄호인지 확인하면 된다.

 

아 그리고, 마지막의 .은 종료를 시키도록 작성해야한다.(문제에서 종료 조건으로 설정되어있음)

 

소스 코드

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

const results = [];

input.forEach((line) => {
	if (line === '.') return;
	const stack = [];
	let isBalanced = true;

	for (const char of line) {
		if (char === '(' || char === '[') {
			stack.push(char);
		} else if (char === ')') {
			if (stack.pop() !== '(') {
				isBalanced = false;
				break;
			}
		} else if (char === ']') {
			if (stack.pop() !== '[') {
				isBalanced = false;
				break;
			}
		}
	}

	if (isBalanced && stack.length === 0) {
		results.push('yes');
	} else {
		results.push('no');
	}
});

console.log(results.join('\n'));
728x90
반응형
LIST