Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준 18222
- 스프링 에러
- dfs
- 리트코드 1557
- 프로그래머스
- DP
- 스택
- 리트코드
- 코테
- 백준
- leetcode 1721
- 인텔리제이 에러
- BFS
- 프로그래머스 java
- 백준 16935
- 파이썬
- 코딩테스트
- java 프로그래머스
- 분할정복
- 자바
- 자바 5464
- 그래프 자바
- 구현
- Java
- daily challenge
- java leetcode
- leetcode
- 자바 리트코드
- 카카오
- 리트코드 자바
Archives
- Today
- Total
레벨업 일지
[Java] leetcode 1472. Design Browser History 본문
- 알아야 할 개념
- 링크드리스트
문제
https://leetcode.com/problems/design-browser-history/description/
웹사이트 뒤로가기 앞으로 가기 (undo, redo) 기능을 구현하는 문제
풀이
리스트의 삽입, 삭제가 많이 일어남으로 문자열을 저장할 자료구조로 링크드 리스트 사용하였다.
풀이 알고리즘은 다음과 같다.
- 문자열 담을 리스트, 현재 위치 인덱스를 저장할 변수를 초기화한다.
- visit 메서드를 구현한다.
- 하나 추가 됐으니깐 curPoint += 1 을 한다.
- curPoint가 배열 끝 지점에 다다랐으면 add 메서드를 , 그게 아니라면 set 메서드를 사용하여 url 리스트를 update 한다.
- visit을 하면 현재지점 curPoint 이후의 지점 정보는 삭제 하라그랬음으로 while문을 이용하여 ( 배열 사이즈 - curPoint + 1) 만큼 삭제를 한다.
- back 메서드를 구현한다.
- 인덱스를 curPoint - steps 값이 음수이면 0 을 그렇지 않으면 그대로 리턴한다.
- forward 메서드를 구현한다.
- curPoint + step 한것이 배열 마지막 인덱스위치 보다 크면 마지막 위치를 , 그렇지 않으면 curPoint + step 위치의 문자열을 리턴한다.
코드
class BrowserHistory {
String homepage;
LinkedList<String> history;
int curPoint;
public BrowserHistory(String homepage) {
this.homepage = homepage;
history = new LinkedList<>();
history.add(homepage);
curPoint = 0;
}
public void visit(String url) {
curPoint++;
if (curPoint == history.size()) {
history.add(url);
} else {
history.set(curPoint, url);
}
while (curPoint < history.size() -1) {
history.removeLast();
}
}
public String back(int steps) {
curPoint = curPoint - steps < 0 ? 0 : curPoint - steps;
return history.get(curPoint);
}
public String forward(int steps) {
curPoint = curPoint + steps > history.size() - 1 ? history.size() - 1 : curPoint + steps;
return history.get(curPoint);
}
}
'알고리즘 > leetcode' 카테고리의 다른 글
[Java] leetcode 2492. Minimum Score of a Path Between Two Cities (0) | 2023.03.23 |
---|---|
[Java] leetcode 605. Can Place Flowers (0) | 2023.03.20 |
[Java] leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal (2) | 2023.03.17 |
[Java] leetcode 997. Find the Town Judge (0) | 2023.02.23 |
[Java] leetcode 37. Sudoku Solver (2) | 2023.02.20 |
Comments