📌 문제 링크
https://www.acmicpc.net/problem/10773
📌 문제 탐색하기
- 주어진 수를 하나씩 가지고 있다가 0이 나오면 가장 최근에 가진 수를 지운다.
- 마지막에는 가지고 있는 수를 모두 더해라
시간복잡도
- O(n)
알고리즘 선택
- 스택
📌 코드 설계하기
- 문제의 `input`을 개행으로 분리하고 숫자로 변환 후 구조분해할당합니다.
- `stack` 배열을 초기화합니다.
- `arr`배열을 순회합니다.
- 가져온 값이 `0`이 아니면 `stack`에 값을 넣습니다.
- `0`이면 최근에 들어온 값을 지웁니다.
- `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 |