문제 설명
전달인자
- actions : String과 Number 타입을 요소로 갖는 브라우저에서 행동한 순서를 차례대로 나열한 배열
- start : String 타입의 시작 페이지를 나타내는 현재 접속해 있는 대문자 알파벳
출력 값
- [ [prev 스택], 현재 페이지, [next 스택] ]
조건
- 새로운 페이지로 접속할 경우 prev 스택에 원래 있던 페이지를 넣고 next 스택을 비움
- 뒤로 가기 버튼을 누를 경우 원래 있던 페이지를 next 스택에 넣고, prev 스택의 top에 있는 페이지로 이동한 뒤, prev 스택의 값을 pop
- 앞으로 가기 버튼을 누를 경우 원래 있던 페이지를 prev 스택에 넣고, next 스택의 top에 있는 페이지로 이동한 뒤, next 스택의 값을 pop
- 브라우저에서 뒤로 가기, 앞으로 가기 버튼이 비활성화일 경우(클릭이 되지 않을 경우)에는 스택에 push 하지 않음
코드 작성 포인트
1. prev, next 스택의 자료를 담기 위한 배열을 변수로 선언 후 pop과 push로 값을 처리하기
2. 현재 페이지를 표현하는 문자열을 담기 위한 cur 변수 선언 후 값을 할당하기
코드 작성하기
function browserStack(actions, start) {
let prev = []; // prev 스택을 담을 배열
let next = []; // next 스택을 담을 배열
let cur = start; // 현재 페이지를 담을 문자열
for (let action of actions) {
// 앞으로 갈 경우
if(action === 1 && next.length !==0) {
prev.push(cur);
cur = next.pop();
// 뒤로 갈 경우
} else if (action === -1 && prev.length !==0) {
next.push(cur);
cur = prev.pop();
// 특정 페이지에 접속할 경우
} else {
prev.push(cur);
cur = action;
next = [];
}
}
return [prev, cur, next]
}
반응형
'프로그래밍 > 알고리즘, 프로그래밍 언어' 카테고리의 다른 글
[알고리즘] 인접행렬(adjacency matrix) 구현 (JavaScript) (0) | 2021.08.10 |
---|---|
[알고리즘] Tree 자료구조 구현 (JavaScript) (0) | 2021.07.29 |
[알고리즘] Queue로 포장을 마치고 나가는 인원 수 구하기 (0) | 2021.07.27 |
[알고리즘] Queue 자료구조 JavaScript로 구현 (0) | 2021.07.27 |
[알고리즘] Stack자료구조 JavaScript로 구현 (0) | 2021.07.27 |
댓글