본문 바로가기

자료구조+알고리즘/BOJ

[BOJ-10773-Siver4]제로 (javascript)

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

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

 

[유형]

- 스택

 

 

 

[문제]

 

 

 

[풀이]

K 숫자 입력 받고 

K 갯수대로 숫자들 입력받기

0이 나오면 pop() ...

마지막 배열에 남은 숫자들 더하면 끝

 

 

[코드 풀이]

// 파일 불러오기 -> fs모듈
let fs = require('fs');
let input = fs.readFileSync('./input.txt').toString().split('\n'); //백준에서는 '/dev/stdin'을 사용하면 된다.

const cnt = Number(input[0])
const stack = []

for(let i=0; i<=cnt; i++){
  const num = Number(input[i])

  if(num === 0 && stack.length !== 0) {
    stack.pop();
  }else{
    stack.push(num)
  }
}
let answer = 0;
answer = stack.slice(1).reduce((acc, cur) => acc + cur, 0); //slice(1)로 인덱스1부터 끝까지 얕은 복사본 배열 생성
console.log(answer);

 

728x90
반응형