본문 바로가기

코딩/알고리즘

백준) 10773 - 제로 JS

📌 문제 링크

https://www.acmicpc.net/problem/10773


📌 문제 탐색하기

  • 주어진 수를 하나씩 가지고 있다가 0이 나오면 가장 최근에 가진 수를 지운다.
  • 마지막에는 가지고 있는 수를 모두 더해라

시간복잡도

  • O(n)

알고리즘 선택

  • 스택

📌 코드 설계하기

  1. 문제의 `input`을 개행으로 분리하고 숫자로 변환 후 구조분해할당합니다.
  2. `stack` 배열을 초기화합니다.
  3. `arr`배열을 순회합니다.
    1. 가져온 값이 `0`이 아니면 `stack`에 값을 넣습니다.
    2. `0`이면 최근에 들어온 값을 지웁니다.
  4. `stack`에 있는 모든 값을 더합니다.

📌 정답 코드

//https://www.acmicpc.net/problem/10773
export {};

const fs = require("fs");
const filePath =
  process.platform === "linux" ? "/dev/stdin" : __dirname + "/input2.txt";
const [_, ...arr] = fs
  .readFileSync(filePath)
  .toString()
  .trim()
  .split("\n")
  .map(Number);

const stack = [];
for (const x of arr) {
  if (x !== 0) {
    stack.push(x);
  } else {
    stack.pop();
  }
}

console.log(stack.reduce((x, y) => x + y, 0));

'코딩 > 알고리즘' 카테고리의 다른 글

백준) 1816 - 암호키 JS  (0) 2024.11.26
백준) 1157 - 단어 공부 JS  (0) 2024.11.25
백준) 2417 - 정수 제곱근 JS  (0) 2024.11.24
백준) 1920 - 수 찾기 JS  (0) 2024.11.23
백준) 1904 - 01타일 JS  (0) 2024.11.22