본문 바로가기

CS14

Stack 구현 (Array, LinkedList) Stack LIFO: Last In First Out 리스트의 제한된 형태: 넣고 빼기가 리스트의 한쪽 끝에서만 가능 Notation PUSH POP TOP: 맨 위의 값 리턴. 종류 Array based link based Array based Stack struct stack { var elemensts: [T] = [] var isEmpty: Bool { elemensts.isEmpty } mutating func push(element: T) { elemensts.append(element) } @discardableResult mutating func pop() -> T? { elemensts.popLast() } func peek() -> T? { elemensts.last } } 단순 배열을.. 2023. 8. 4.
[OS] Processes: Process, Process States, Process API 이전글 https://codingmon.tistory.com/65 [OS] OS Overview (CPU가상화, 메모리 가상화, Concurrency, Persistence) Virtualizing CPU 오늘날 하나의 컴퓨터에서 돌아가는 프로그램은 매우 많습니다. 지금 당장 이 글을 쓰면서 제 노트북에는 Xcode, Chrome, Notion, Discord, 카카오톡 등등 정말 수 많은 프로그램들이 실행되 codingmon.tistory.com Program 소스프로그램에서 컴파일에서 얻은 실행 파일을 말하고, 이것은 HDD, SDD 저장장치에 저장됩니다. 저장장치에 저장되어있던 프로그램이 실행되려면 메인 메모리로 loading되어야합니다. 어째서??? 폰노이만 아키텍쳐이기 때문에 CPU가 메모리에 .. 2023. 3. 27.
Queue 구현 (feat. Swift) https://github.com/kodecocodes/swift-algorithm-club/tree/master/Queue 해당 문서를 직접 번역하면서 공부한 내용입니다. BFS를 공부하면서 Queue를 쓰고싶었는데, built-in swift에서의 removieFirst()함수는 배열에서 맨 앞단의 요소를 제거하는 것이기 때문에 O(n)의 시간복잡도가 생긴다. 파이썬에서 deque라이브러리를 통해 O(1)로 맨 앞단의 요소를 제거하는 것처럼 하기 위해서 Swift의 Queue에 대해서 공부해보았다. 단순한 Queue의 구현 public struct Queue { fileprivate var array = [T]() public var isEmpty: Bool { return array.isEmpty .. 2023. 2. 7.
Heap 구현 (feat. Swift) https://www.kodeco.com/586-swift-algorithm-club-heap-and-priority-queue-data-structure#toc-anchor-001 해당 원문을 공부하면서 직접 번역한 내용입니다. 정확하지 않은 표현과 필자가 본인의 이해를 위해 추가로 적은 내용들이 있으니 그 점 유의하시기 바랍니다. 우선순위 큐를 구현하는데 Heap을 더 선호하는 이유: https://codingmon.tistory.com/23 Heap은 binary tree(BST와 유사한)와 닮았다. Heap은 트리이고, 모든 노드는 0, 1, 2개의 자식들을 가지고 있다. Heap의 요소들은 그들의 우선 순위에 따라 부분적으로 정렬돼있다. 트리의 모든 노드는 각 노드의 자식들보다 높은 우선순위를 .. 2023. 2. 5.