자바스크립트에는 큐뿐 아니라 스택도 없다!
그나마 스택은 배열 뒤에서 pop 하면 되니 구현이 좀 더 쉽다만...
오늘 이유모를 수많은 에러들을 보며 몸비틀며 자바스크립트의 불편함에 머리가 터질지경이다
아이고 자바스크립트야 언제 친해질래...
https://www.acmicpc.net/problem/10828
// 전체 입력받기 및 처리
const array = require("fs").readFileSync("/dev/stdin").toString().split("\n");
// 처음 입력 값 제거
array.shift();
const stack = [];
// 객체를 만들어 객체의 메소드를 이용해서 입력이 메소드 명과 같으면
// 해당 명령을 실행하게한다
const fun = {
pop: () => stack.pop() || -1,
size: () => stack.length,
empty: () => (stack[0] ? 0 : 1),
top: () => stack[stack.length - 1] || -1,
// push의 경우 push +" " + 숫자 이므로 공백 제거 후 [1]
push: (item) => {
stack.push(item.split(" ")[1]);
return "";
},
};
// 배열을 돌며 리턴받으면 그값을 result 에 더하고 개행해야 하므로
// 쌓아 누적하는 reduce 함수를 사용, 입력값을 객체의 속성인 메소드와 대조,
// 같다면 실행, push의 경우는 그대로 실행하면 안되니 예외로 처리한다
const result = array.reduce(
(acc, v) => acc + (fun[v] ? `${fun[v]()}\n` : fun.push(v)),
""
);
console.log(result);
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 11651/javascript] 좌표 정렬하기 2 (0) | 2022.08.17 |
---|---|
[백준 2798/javascript] 블랙잭 (0) | 2022.08.16 |
[백준 1629/javascript] 곱셈 (0) | 2022.08.14 |
[백준 2164/javascript] 카드2 (0) | 2022.08.13 |
[백준 1158/c++] 요세푸스 문제 (0) | 2022.08.12 |
댓글