저렴하게 그려본 스택과 큐,,, ^_^
알고리즘 수업을 들으면서 Stack과 Queue를 구현하는 걸 익혔는데 내가 따로 구현해 보고 넘어가려구 한다
평소에 스택을 활용한다고 해도 그냥 array를 활용해서 구현했는데 일케 본격적으로? 구현해 봤던 건 첨이라 신기했당 ㅋ
이제 슬슬 취준하면서 알고리즘 문제도 다시 풀어야 하는데 일단!! 그 전에 시간이 조금 남을 때 이전에 배웠던 큐와 스택을 직접 구현해 보려고 한다.
그런데 잠깐!!!!!
고럼 Stack과 Queue의 특징과 속해있는 method를 살펴보고 가자.
Stack
- Last In First Out / First In Last Out: 선입 후출 / 후입선출 (근데일케도쓰나?)
- 한쪽 끝에서만 자료를 넣고 뺄 수 있는 형식을 말한다.
- 프링글스 통과 같다!
- Method
- push
- pop
- peek
- isEmpty
- count
직접 구현해 보자!
struct Stack<T> {
private var elements: [T] = []
init() { }
mutating func push(with element: T) {
elements.append(element)
}
mutating func pop(with element: T) {
elements.popLast()
}
// elements에 요소가 있는 경우 마지막 요소 반환 / 없으면 nil
func peek() -> T? {
return elements.last
}
var isEmpty: Bool {
return elements.isEmpty
}
var count: Int {
return elements.count
}
}
Queue
- First In First Out: 선입선출
- 맨 첨에 들어온 친구는 젤 먼저 나간다.
- 줄 서기와 똑같음!
- method
- Enqueue
- Dequeue
- Peek
- isEmpty
- Count
직접 구현해 보자!!
struct Queue<T> {
private var elements: [T] = []
private var index = 0
init() { }
mutating func enqueue(with element: T) {
elements.append(element)
}
mutating func dequeue(with element: T) -> T? {
if index < count {
let value = elements[index]
index += 1
return value
} else {
return nil
}
}
func peek() -> T? {
return index < count ? elements[index] : nil
}
var isEmpty: Bool {
elements.isEmpty
}
var count: Int {
elements.count
}
}
'알고리즘' 카테고리의 다른 글
[Swift] 달리기 경주 (0) | 2023.10.24 |
---|