1874번 문제 - 스택 수열
풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const filePath = process.platform !== "linux" ? "./test.txt" : "dev/stdin";
let input = require("fs").readFileSync(filePath).toString().trim().split("\n");
class Stack {
constructor() {
this._arr = [];
}
push(item) {
this._arr.push(item);
}
pop() {
return this._arr.pop();
}
peek() {
return this._arr.length ? this._arr[this._arr.length - 1] : -1;
}
}
let stack = new Stack();
let answer = [];
let cnt = 1;
for (let j = 1; j <= input[0]; j++) {
while (stack.peek() < input[j]) {
stack.push(cnt++);
answer.push("+");
}
if (stack.peek() == input[j]) {
stack.pop();
answer.push("-");
} else {
return console.log("NO");
}
}
console.log(answer.join("\n"));
4949번 문제 - 균형잡힌 세상
풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const filePath = process.platform !== "linux" ? "./test.txt" : "dev/stdin";
let input = require("fs").readFileSync(filePath).toString().trim().split("\n");
class Stack {
constructor() {
this._arr = [];
}
push(data) {
this._arr.push(data);
}
pop() {
return this._arr.pop() || -1;
}
peek() {
return this._arr[this._arr.length - 1] || -1;
}
size() {
return this._arr.length;
}
empty() {
return this._arr.length ? 0 : 1;
}
}
let stack = new Stack();
let answer = [];
for (let i = 0; i < input.length - 1; i++) {
let strArr = input[i].trim().split("");
stack._arr.length = 0;
for (let x of strArr) {
switch (x) {
case "(":
stack.push(x);
break;
case ")":
stack.peek() == "(" ? stack.pop() : stack.push(x);
break;
case "[":
stack.push(x);
break;
case "]":
stack.peek() == "[" ? stack.pop() : stack.push(x);
break;
default:
break;
}
}
stack.size() ? answer.push("no") : answer.push("yes");
}
console.log(answer.join("\n"));
1406번 - 에디터
풀이
String.prototype.substring() 메서드
로 풀면 메모리 초과Array.prototype.splice() 메서드
로 풀면 시간 초과
커서를 기준으로 좌우 문자열 각각을 배열로 만들어줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const filePath = process.platform !== "linux" ? "./test.txt" : "dev/stdin";
let input = require("fs").readFileSync(filePath).toString().trim().split("\n");
let lStr = [...input[0].trim()];
let rStr = [];
for (let j = 2; j < input.length; j++) {
let [order, data] = input[j].trim().split(" ");
switch (order) {
case "P":
lStr.push(data);
break;
case "L":
lStr.length && rStr.push(lStr.pop());
break;
case "D":
rStr.length && lStr.push(rStr.pop());
break;
case "B":
lStr.length && lStr.pop();
break;
default:
break;
}
}
console.log(lStr.join("") + rStr.reverse().join(""));