230316 Stack 연습

허크·2023년 3월 16일
0

작은 문제로 쪼개 생각하기

  1. 스택 자료구조를 구현합니다
  2. 현제 접속한 페이지를 저장하는 변수를 만듭니다
  3. actions 배열을 순회하면서 다음과 같이 처리
  • 현재 페이지를 prev 스택에 push
  • 1일 경우 next 스택에서 값을 pop, current에 설정
  • -1일 경우 prev 스택에서 값을 pop, current에 설정
  1. 최종적으로 스택을 3개를 반환

알고리즘 수도코드 작성

start로 주어진 페이지를 current에 push

for ( action의 요소를 순회하는 반복문)
if actions 요소가 앞으로 가기(1)의 경우
if next 스택에 페이지가 있을 경우
1. 현재 페이지를 pop해서, prev 스택으로 push
2. next 스택에 있는 페이지를 pop해서 current 스택으로 push

else if actions 요소가 뒤로가기(-2)의 경우
if prev 스택에 페이지가 있을 경우
1. 현재 페이지를 pop해서, next 스택으로 push
2. prev 스택에 있는 페이지를 pop해서 current 스택으로 push

else
1. current 스택의 페이지를 pop해서 prev 스택으로 push
2. current 스택에 조회한 action 요소를 push


에러 핸들링

  1. start가 입력된다는 걸 잊었음
    -> current의 스택이 0인 경우 케이스를 제외하고 코드를 재작성
    -> start의 요소를 current에 넣어주는 코드를 for문 앞에 추가

  2. 새로운 페이지에 접속할 경우 next 스택은 전부 지워져야함
    -> else케이스에 next스택을 초기화하는 코드 추가

  3. 배열을 순회하는 것이므로 for문 말고 for-each문을 사용권장
    -> action이라는 임시 변수를 사용한 for-each문 순회로 변경

  4. actions.equals() 메서드 사용시 null-safe하지 않음
    -> Object.equals(action, )를 사용하여 NullPointerException 방지

profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글