[伯俊10799]鉄棒with Nodejs
📌 質問する
https://www.acmicpc.net/problem/10799
📌 に答える
かっこを見ると、
스택
だと思い、問題に触れました.論理は何もない.1.最初にカッコが「(」の場合、スタックに追加します.
2.次に右括弧")が表示されると、2つのケースが表示されます.
1) 레이저가 되어 모든 막대기를 다 자르는 경우
이럴 때에는 스택에 쌓은 '('의 개수 만큼 쇠막대기가 잘리기 때문에 스택의 길이만큼 쇠막대기 개수에 더해준다.
2) 막대기의 끝 부분이라 막대기 1개가 더 생기는 경우
이 경우는 쇠막대기 개수에 +1을 더해주면 된다.
📌 コード#コード#
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString().trim()
: `(((()(()()))(())()))(()())`
).split("\n");
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
const brackets = input().split("");
const stack = [];
let stickCnt = 0;
for (let i = 0; i < brackets.length; i++) {
if (brackets[i] === "(") {
stack.push(brackets[i]);
} else {
stack.pop();
if (brackets[i - 1] === "(") {
stickCnt += stack.length;
} else {
stickCnt += 1;
}
}
}
console.log(stickCnt);
📌 に感銘を与える
初めて問題を見た時はスタックだったのに...スタックでしょうか…?どうやって解くの?と思います.
スタックを描き出して,")"が現れたときにどのように行われたのかを知ることで,解決策を考え出した.問題を解く時間は長くないが、考えるだけで1時間もかかった.もっと頑張ろう!
グラフィックフォーマットを除いて、他のアルゴリズムはすべて新しい、難しいので、私はもっとよく見て、熟知しなければならないと思います.毎日悟る...
Reference
この問題について([伯俊10799]鉄棒with Nodejs), 我々は、より多くの情報をここで見つけました https://velog.io/@hsk10271/백준-10799-쇠막대기-with-node.jsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol