우당탕탕 개발일기
[javaScript] 백준 10773번 제로 본문
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
힌트에서 주어진 것처럼 배열 안에 저 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
728x90
'What I Learned > Algorithm' 카테고리의 다른 글
[javascript] 백준 11050번 이항 계수 1 (0) | 2022.03.15 |
---|---|
[javascript] 백준 9012번 괄호 (0) | 2022.03.10 |
[javascript] 백준 1110 더하기 사이클 (0) | 2022.03.04 |
[javascript] 백준 4948번 베르트랑공준 (0) | 2022.03.02 |
[프로그래머스 / 자바스크립트] 폰켓몬 (0) | 2022.01.26 |