Algorithm
[Stack] 웹 브라우저 뒤로가기 앞으로가기 문제
개발자 염상진
2022. 10. 11. 11:54
Stack 웹 브라우저 뒤로가기 앞으로가기 문제
Stack 웹 브라우저 뒤로가기 앞으로가기 풀이
function browserStack(actions, start) {
if(typeof start !== 'string') return false;
let prevStack = [];
let nextStack = [];
let current=start;
actions.forEach(item=>{
// 뒤로가기(prevStack pop)
// 현재 페이지 nextStack push
if(item === -1 && prevStack.length !== 0){
nextStack.push(current);
current = prevStack.pop()
}
// 앞으로 가기(nextStack pop)
// 현재 페이지 prevStack push
else if(item === 1 && nextStack.length !== 0){
prevStack.push(current);
current = nextStack.pop();
}
// 페이지 이동
// prevStack push + nextStack flush
else if(typeof item === 'string'){
prevStack.push(current);
current = item;
nextStack = [];
}
})
return [prevStack, current, nextStack]
}
- 종이에 prevNext , Current, nextStack에 페이지가 어떻게 이동하는지 그려봅니다.
- actions에는 페이지 이동 요소가 배열로 담겨있습니다.
- actions를 순회하면서 1(앞으로가기), -1(뒤로가기), 페이지 이동에 따른 배열 push(), pop() 함수를 사용합니다.
Stack 웹 브라우저 뒤로가기 앞으로가기 후기
스택을 활용한 웹 브라우저 앞으로 가기, 뒤로가기 페이지를 구현하는 문제입니다. 3가지 경우의 수를 고려해서 페이지를 스택에 어떻게 넣고 가져올지를 고민하면 금방 풀 수 있는 문제입니다.
🚀️ 도움이 되셨다면 구독과 좋아요 부탁드립니다 👍️