10828번 문제 - 스택
풀이
- 배열을 이용해 Stack 구현
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
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.length ? this._arr.pop() : -1;
}
size() {
return this._arr.length;
}
empty() {
return this._arr.length ? 0 : 1;
}
top() {
return this._arr.length ? this._arr[this._arr.length - 1] : -1;
}
}
let stack = new Stack();
let result = [];
for (let i = 1; i <= input[0]; i++) {
let arr = input[i].trim().split(" ");
switch (arr[0]) {
case "push":
stack.push(arr[1]);
break;
case "top":
result.push(stack.top());
break;
case "size":
result.push(stack.size());
break;
case "empty":
result.push(stack.empty());
break;
case "pop":
result.push(stack.pop());
break;
default:
break;
}
}
console.log(result.join("\n"));
28278번 문제 - 스택 2
풀이
- 배열을 이용해 Stack 구현
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
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.length ? this._arr.pop() : -1;
}
size() {
return this._arr.length;
}
empty() {
return this._arr.length ? 0 : 1;
}
top() {
return this._arr.length ? this._arr[this._arr.length - 1] : -1;
}
}
let stack = new Stack();
let result = [];
for (let i = 1; i <= input[0]; i++) {
let arr = input[i].trim().split(" ");
switch (arr[0]) {
case "1":
stack.push(arr[1]);
break;
case "5":
result.push(stack.top());
break;
case "3":
result.push(stack.size());
break;
case "4":
result.push(stack.empty());
break;
case "2":
result.push(stack.pop());
break;
default:
break;
}
}
console.log(result.join("\n"));
10773번 문제 - 제로
풀이
- 배열을 이용해 Stack 구현
- Array 객체의 reduce 메서드 활용
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.length ? this._arr.pop() : -1;
}
size() {
return this._arr.length;
}
empty() {
return this._arr.length ? 0 : 1;
}
top() {
return this._arr.length ? this._arr[this._arr.length - 1] : -1;
}
}
let stack = new Stack();
for (let i = 1; i <= input[0]; i++) {
let data = Number(input[i]);
data ? stack.push(data) : stack.pop();
}
let result = stack._arr.reduce((acc, x) => {
return acc + x;
}, 0);
console.log(result);
9012번 문제 - 괄호
풀이
- 문자열의 각 문자 반복에 for … of 사용
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.length ? this._arr.pop() : -1;
}
size() {
return this._arr.length;
}
peek() {
return this._arr.length ? this._arr[this._arr.length - 1] : -1;
}
}
let stack = new Stack();
for (let i = 1; i <= input[0]; i++) {
stack._arr.length = 0;
let strArr = input[i].trim().split("");
for (let x of strArr) {
x == "("
? stack.push(x)
: stack.peek() == "("
? stack.pop()
: stack.push(x);
}
console.log(stack.size() ? "NO" : "YES");
}
9093번 문제 - 단어 뒤집기
풀이
- 스택에 쌓아 가다가
' '(빈칸)
을 기준으로pop
하여 결과값에 저장
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
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.length ? this._arr.pop() : -1;
}
size() {
return this._arr.length;
}
top() {
return this._arr.length ? this._arr[this._arr.length - 1] : -1;
}
}
let stack = new Stack();
for (let i = 1; i <= input[0]; i++) {
stack._arr.length = 0;
let strArr = input[i].trim();
let result = [];
for (let x of strArr) {
if (x == " ") {
while (stack.size()) {
result.push(stack.pop());
}
result.push(x);
} else {
stack.push(x);
}
}
while (stack.size()) {
result.push(stack.pop());
}
console.log(result.join(""));
}