백준 10773번 - 제로(Node.js)
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net

나의 풀이
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const readline = require("readline"); | |
const rl = readline.createInterface({ | |
input: process.stdin, | |
output: process.stdout, | |
}); | |
let input = []; | |
rl.on("line", function (line) { | |
input.push(line); | |
K = Number(input[0]); | |
if (input.length - 1 === K) { | |
rl.close(); | |
} | |
}).on("close", function () { | |
let answer = []; | |
Ks = input.slice(1).map((el) => { | |
return Number(el); | |
}); | |
for (let i = 0; i < Ks.length; i++) { | |
if (Ks[i] !== 0) { | |
answer.push(Ks[i]); | |
} else { | |
answer.pop(answer[answer.length - 1]); | |
} | |
} | |
if (answer.length === 0) { | |
console.log(0); | |
} else { | |
console.log( | |
answer.reduce((acc, cur) => { | |
return acc + cur; | |
}) | |
); | |
} | |
process.exit(); | |
}); |
- 13번째 줄 : K는 입력의 제일 첫번 째 입력을 의미한다.
- 21 ~ 23번째 줄 : Ks는 입력의 첫번 째 입력을 제외한 나머지 K개 만큼의 입력을 의미한다.
- 25 ~ 31번째 줄 : for문을 사용하여 Ks[i] 값이 0이 아니면 answer라는 배열에 그 값을 담아두고, 0이라면 answer 배열에 담긴 값을 뒤에서부터 하나씩 빼주게 설정하였다.
이를 위해서, answer 배열에 담아줄 때는 push()를 사용했고, answer 배열에서 빼줄 때는 pop()을 사용하였다. - 33 ~ 41 번째 줄 : answer 배열에 아무것도 안 담겨 있을 수 있으므로, answer의 길이가 0일 때는 0을 출력하게 해주었고, answer의 길이가 0이 아닐 때는 reduce() 메서드를 사용하여 answer에 담긴 모든 값을 더한 값을 출력하게 해주었다.
'Algorithm > Baekjoon' 카테고리의 다른 글
백준 1057번 - 토너먼트(Node.js) (2) | 2022.07.30 |
---|---|
백준 11047번 - 동전 0(Node.js) (0) | 2022.07.28 |
물건을 쪼갤 수 없는 배낭 문제(0/1 Knapsack Problem) (1) | 2022.07.27 |
백준 12865번 - 평범한 배낭(Node.js) (1) | 2022.07.26 |
백준 2357번 - 최솟값과 최댓값(Node.js) (1) | 2022.07.24 |