문제 링크
https://www.acmicpc.net/problem/4949
풀이 전략
모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. (다른 괄호 일 수도 있음)
모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다.
코드
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
input.pop();
solution(input);
function solution(arr) {
const answerArr = [];
for (const str of arr) {
answerArr.push(confirm(str));
}
console.log(answerArr.join("\n"));
}
function confirm(str) {
const stack = [];
for (const char of str) {
if (char === "(" || char === "[") stack.push(char);
if (char === ")") {
const v = stack.pop();
if (v === undefined || v === "[") return "no";
} else if (char === "]") {
const v = stack.pop();
if (v === undefined || v === "(") return "no";
}
}
if (stack.length) return "no";
else return "yes";
}
회고
조건에 맞추어 식을 작성하면 된다. 스택의 기본적인 동작원리를 알려주는 문제여서 어떻게 동작하는지 원리를 알면서 문제를 푸는 것이 좋다. 이렇게 비교적 쉬운 문제들은 가독성을 더욱 좋게 만들려고 고민해본다. 이해하기 쉬운 코드는 아직 어려운 것 같다.
더 좋은 방법이나 의견이 있으시다면 댓글 부탁드립니다 :)
'Algorithm > 백준[BOJ]' 카테고리의 다른 글
[JS] 백준 18258번 큐2 (0) | 2022.06.14 |
---|---|
[JS] 백준 1874번 스택 수열 (0) | 2022.06.11 |
[JS] 백준 1707번 이분 그래프 (0) | 2022.06.10 |
[JS] 백준 2206번 벽 부수고 이동하기 (0) | 2022.06.09 |
[JS] 백준 16928번 뱀과 사다리 게임 (0) | 2022.06.09 |
댓글