
열차가 들어갔다 나올 수 있는 플랫폼이 있다. 열차가 1번부터 3번까지 순서대로 들어온다고 할 때, 입력 순서대로 나갈 수 있는지 없는지를 프로그램을 작성하시오.
입력은 차량 순서 번호가 적혀 있는 배열이며, 가능 여부에 따라 true/false를 반환한다.
function answer(train) {
//1. 스택만들기
let stack = [],
num = 0;
//train만큼 for문을 돌면서, train이 나올 수 있는지를 판단
for (let i = 0; i < train.length; i++) {
while (stack.length === 0 || stack[stack.length - 1] < train[i]) {
stack.push(++num);
}
if (stack[stack.length - 1] === train[i]){
stack.pop();
} else {
return false;
}
}
return true;
}
/* user code */
if(!Array.prototype.peek){
Array.prototype.peek=function(){
return this[this.length-1];
}
}
if(!Array.prototype.isEmpty){
Array.prototype.isEmpty = function(){
return this.length===0;
}
}
function answer(train) {
let stack = [],
num = 0;
for (let i = 0; i < train.length; i++) {
while (stack.isEmpty() || stack.peek() < train[i]) {
stack.push(++num);
}
if (stack.peek() === train[i]){
stack.pop();
} else {
return false;
}
}
return true;
}