白駿10828スタック
29810 ワード
資料構造に基づいて,白峻に位置するスタック問題を解いた.
資料構造を学習する際に作成されるコードに比べて,確かにより多くの防御コードが必要である.
質問:https://www.acmicpc.net/problem/10828
問題に関しては制限事項を親切に説明してくれるので、そのまま実施すれば良いのです.パフォーマンスを最大限に向上させるために、リンクリストでスタックを実装してみました.
でも結果はタイムアウト!
なぜか長い間考えていた.どう考えても、出力効果がよく、Edge caseもなく、性能のためリンクリストにしてもダメなようです?ただJavaScriptは臭いですか?ジャスロは柏俊を解くことができないのか.そう思うよ😥
問題は
コンソールで言えば、彼はもともとデバッグ関数なので、速度が遅いです.詳細はスタックオーバーフローリンクで参考にしてください!
https://stackoverflow.com/questions/2934509/exclude-debug-javascript-code-during-minification
だから最後に
資料構造を学習する際に作成されるコードに比べて,確かにより多くの防御コードが必要である.
質問:https://www.acmicpc.net/problem/10828
問題に関しては制限事項を親切に説明してくれるので、そのまま実施すれば良いのです.パフォーマンスを最大限に向上させるために、リンクリストでスタックを実装してみました.
const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const n = input.splice(0, 1);
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor() {
this.top = null;
this.size = 0;
}
push(value) {
const newNode = new Node(value);
if (this.top === null) {
this.top = newNode;
this.top.next = newNode;
this.size += 1;
} else {
newNode.next = this.top;
this.top = newNode;
this.size += 1;
}
}
pop() {
if (this.size === 0) {
return -1;
} else {
const value = this.top.value;
this.top = this.top.next;
this.size -= 1;
return value;
}
}
getSize() {
return this.size;
}
empty() {
if (this.size === 0) return 1;
else return 0;
}
getTop() {
if (this.size === 0) {
return -1;
} else return this.top.value;
}
}
const myStack = new Stack();
for (let i = 0; i < input.length; i++) {
if (input[i] === 'top') {
console.log(myStack.getTop());
} else if (input[i] === 'size') {
console.log(myStack.getSize());
} else if (input[i] === 'empty') {
console.log(myStack.empty());
} else if (input[i] === 'pop') {
console.log(myStack.pop());
} else {
const [command, value] = input[i].split(' ');
myStack.push(Number(value));
}
}
Node.js
の特性のため、入力したコードは長くなるしかありません...ちょっと直してください.でも結果はタイムアウト!
なぜか長い間考えていた.どう考えても、出力効果がよく、Edge caseもなく、性能のためリンクリストにしてもダメなようです?ただJavaScriptは臭いですか?ジャスロは柏俊を解くことができないのか.そう思うよ😥
問題は
console.log
です.コンソールで言えば、彼はもともとデバッグ関数なので、速度が遅いです.詳細はスタックオーバーフローリンクで参考にしてください!
https://stackoverflow.com/questions/2934509/exclude-debug-javascript-code-during-minification
だから最後に
answer
という空の文字列にすべての答えが含まれていて、最後に一度しか出力されず、結果的に正解が処理されました.const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const n = input.splice(0, 1);
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor() {
this.top = null;
this.size = 0;
}
push(value) {
const newNode = new Node(value);
if (this.top === null) {
this.top = newNode;
this.top.next = newNode;
this.size += 1;
} else {
newNode.next = this.top;
this.top = newNode;
this.size += 1;
}
}
pop() {
if (this.size === 0) {
return -1;
} else {
const value = this.top.value;
this.top = this.top.next;
this.size -= 1;
return value;
}
}
getSize() {
return this.size;
}
empty() {
if (this.size === 0) return 1;
else return 0;
}
getTop() {
if (this.size === 0) {
return -1;
} else return this.top.value;
}
}
const myStack = new Stack();
let answer = '';
for (let i = 0; i < input.length; i++) {
if (input[i] === 'top') {
answer += myStack.getTop() + '\n';
} else if (input[i] === 'size') {
answer += myStack.getSize() + '\n';
} else if (input[i] === 'empty') {
answer += myStack.empty() + '\n';
} else if (input[i] === 'pop') {
answer += myStack.pop() + '\n';
} else {
const [command, value] = input[i].split(' ');
myStack.push(Number(value));
}
}
console.log(answer);
Reference
この問題について(白駿10828スタック), 我々は、より多くの情報をここで見つけました https://velog.io/@cjy0029/백준-10828-스택テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol