function browserStack(actions, start) {
// actions : 인터넷 브라우저에서 행동한 순서가 들어았는 배열 // const actions = ["B", "C", -1, "D", "A", -1, 1, -1, -1];
// start : 시작 페이지 // const start = "A";
// TO DO : actions, start가 주어질 때 마지막에 접속해 있는 페이지와 방문했던 페이지들이 담긴 스택을 반환하는 솔루션 만들기
// 뒤로가기 -> -1, 앞으로가기 -> 1
// 반환되는 출력값 배열의 첫 번째 요소 -> prev 스택 배열, 세번째 요소 -> next 스택 배열
// output = browserStack(actions, start) --> [["A"], "B", ["A", "D"]]
let prev = [];
let next = [];
let current = start; // 마지막에 접속해 있는페이지 리턴할 값임
// 액션 배열 순회하면서 확인..?
// 우선 자료형으로 분기
if(typeof start !== 'string'){ return false }
// 액션 배열 순회하면서
// 1. typeof 문자열을 만나면 새 페이지 킨거임 next 스택이 비워짐
// 2. -1 만나면 뒤로 가기 페이지, preve 스택에서 pop
// 3. 1 만나면 앞으로 가기, next 스택에서 pop
for(let i = 0; i < actions.length; i++){
// -1, 뒤로가기
// 원래 있던 페이지를 next 스택에 넣고,
// prev 스택의 top 페이지로 이동한 뒤 prev 스택의 값을 pop
if(actions[i] === -1 && prev.length !== 0){
// 얘가 빈 배열일 경우도 고려 - pending
let prevPage = prev.pop();
next.push(current);
current = prevPage;
}
// 1, 앞으로 가기
// 원래 있던 페이지를 prev 스택에 넣고
// next 스택의 top에 있는 페이지로 이동한 뒤 next 스택의 값을 pop
else if(actions[i] === 1 && next.length !== 0){
// next 배열이 빈 배열 경우도 고려 - 이따 생각하자
let nextPage = next.pop();
prev.push(current);
current = nextPage;
}
// 순회하다가 만난 것이 문자열임
// 완전 새 페이지
// 넥스트 스택 비워주고 바로 현재 페이지로 지정
// prev 스택은 있으니까 current를 prev를 넣어줌
else if(typeof(actions[i]) === 'string'){
prev.push(current)
next = [];
current = actions[i]
}
}
return [prev, current, next]
}