Home 백준 스택 문제 - 02
Post
X

백준 스택 문제 - 02

1874번 문제 - 스택 수열

백준 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번 문제 - 균형잡힌 세상

백준 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번 - 에디터

백준 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(""));
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.