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 |
Tags
- 오블완
- modern concurrency deep dive
- APNS
- ios
- modern concurrency
- WWDC
- 티스토리챌린지
- 야곰 # 야곰아카데미커리어스타터캠프 #iOS개발자 # 부트캠프
- SWIFT
Archives
- Today
- Total
Geon
Design Browser History 본문
시간복잡도(Big-O)에 데이터의 크기를 넣어서 나온 값이 100,000,000(10^8)이 넘으면 시간 제한 초과할 가능성이 있다.
정수가 저장된 배열 nums이 주어졌을 떄, nums의 원소중 두 숫자를 더해서 target이 될수 있으면 True 불가능하면 False를 반환하세요.
같은 원소를 두 번 사용할 수 없습니다.
class Node {
var value: String
var prev: Node?
var next: Node?
init(value: String) {
self.value = value
}
}
class BrowserHistory {
var head: Node
var current: Node
init(_ homepage: String) {
let newNode: Node = .init(value: homepage)
head = newNode
current = newNode
}
//O(1)
func visit(_ url: String) {
let newNode: Node = .init(value: url)
current.next = newNode
newNode.prev = current
current = current.next!
}
//O(N)
func back(_ steps: Int) -> String {
for _ in 0 ..< steps {
if current.prev != nil {
current = current.prev!
}
}
return (current.value)
}
//O(N)
func forward(_ steps: Int) -> String {
for _ in 0 ..< steps {
if current.next != nil {
current = current.next!
}
}
return (current.value)
}
}
1 <= homepage.length <= 20
1 <= url.length <= 20
1 <= steps <= 100
homepage and url consist of '.' or lower case English letters.
At most 5000 calls will be made to visit, back, and forward
해당 문제에서 시간복잡도에 영향을 끼치는 부분은 steps.count(100) * calls(5000) 이다. 10^5 이므로 10^8이 안넘기 위해 LinkedList 사용하였고,linkedList의 back, forward는 O(n)이므로 시간초과가 나지 않는다.
'코딩테스트' 카테고리의 다른 글
Valid Parentheses (0) | 2024.01.09 |
---|---|
Deque (0) | 2024.01.07 |
Two Pointer (2) | 2024.01.06 |
제한 조건 보는 법 (0) | 2024.01.04 |
FrogRiverOne (0) | 2022.05.15 |