본문 바로가기
Algorithm

[Stack] 웹 브라우저 뒤로가기 앞으로가기 문제

by 개발자 염상진 2022. 10. 11.

 

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가지 경우의 수를 고려해서 페이지를 스택에 어떻게 넣고 가져올지를 고민하면 금방 풀 수 있는 문제입니다. 

 

 


 

🚀️ 도움이 되셨다면 구독좋아요 부탁드립니다 👍️

댓글