우당탕탕 개발일기

[javaScript] 백준 10773번 제로 본문

What I Learned/Algorithm

[javaScript] 백준 10773번 제로

rilee 2022. 3. 7. 10:29
728x90

스택

스택 문제인 10773번. 그래서 스택이 무엇인가에 대해 먼저 알아보았다.

스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조을 말한다.

스택의 의미를 알고나니 빈 배열을 두고 그 안에 값을 넣고 빼는 과정을 필요함을 확신할 수 있었다. (머리를 스쳐지나가는 push, pop..)

 

 

 

 

 


문제만으로는 이해가 어려워서 예제2와 힌트를 참고해 문제를 이해했다.

 

예제의 2의 입력

10
1
3
5
4
0
0
7
0
0
6

먼저 K는 10이므로 총 10줄이 생성되고, 그 후 각 줄에 정수 1개씩 배정된다.

이 때 0이 나오면 가장 최근의 수를 삭제한다.

 

 

위 과정을 거쳐서 예제2의 출력값은 2가 된다. K가 주어지고 어떻게 숫자가 구성되는지를 확인.

 

 

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/pop

 

Array.prototype.pop() - JavaScript | MDN

pop() 메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.

developer.mozilla.org

힌트에서 주어진 것처럼 배열 안에 저 10개의 숫자들을 넣고,

0이 나올 때마다 arr.pop()을 이용해 배열의 제일 마지막 요소를 제거해주며 배열을 구성한다.

그렇게 구성된 배열의 모든 요소의 합을 구해주면 되는 쉬운 문제!

 

 

 

 

💡 최종 코드

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let count = Number(input[0])
let arr = []

// 숫자를 제거하여 빈 배열인 arr에 담는 과정
for (let i =1; i<=count; i++){
    const num = Number(input[i])
    if (num === 0) {
        arr.pop()
    } else {
        arr.push(num)
    }
}

// 위 과정을 통해 구성된 배열 arr의 요소들의 합을 구하는 과정
let answer = 0;

for (let i=0; i<arr.length; i++){
    answer += arr[i]
}

console.log(answer)

백준 문제는 input값이 참 어려운 것 같다ㅠㅠ...

중간과정은 쉽게 알 수 있었지만, input을 넣는 과정이 이해가 되지 않아 찾아봐야했다.

그래도 오랜만에 쉬운 문제를 만나서 기분이 좋다.

 

 

 

📍 출처

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

 

10773번: 제로

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

www.acmicpc.net

 

728x90