균형잡힌 세상

문제

언어

  • JavaScript

문제 풀이 step 1

  • 스택을 이용해서 풀 수 있습니다.
  • 문자가 괄호인 경우를 제외하고는 다 무시합니다.
  • 문자가 ‘(‘ 또는 ‘[’ 일때는 push 합니다.
  • 문자가 ‘)’ 이면 스택의 맨 위가 ‘(‘ 인지 체크해주고, pop 합니다.
  • 문자가 ‘]’ 이면 스택의 맨 위가 ‘]’ 인지 체크해주고, pop 합니다.

소스 코드

const input = require("fs").readFileSync("/dev/stdin").toString();

const solution = (input) => {
	const arr = input.split(".");
	let res = [];

	for (let i = 0; i < arr.length - 2; i++) {
		const str = arr[i];
		const stack = [];
		let check = true;

		for (let j = 0; j < str.length; j++) {
			if (str[j] === "(") {
				stack.push(str[j]);
			} else if (str[j] === ")") {
				if (stack.length < 1 || stack[stack.length - 1] === "[") {
					check = false;
					break;
				} else stack.pop();
			} else if (str[j] === "[") {
				stack.push(str[j]);
			} else if (str[j] === "]") {
				if (stack.length < 1 || stack[stack.length - 1] === "(") {
					check = false;
					break;
				} else stack.pop();
			}
		}

		if (check && stack.length === 0) res.push("yes");
		else res.push("no");
	}

	return res.join("\n");
};

console.log(solution(input));