CS
-
Swift에서 힙, 우선순위 큐 사용하기 (100% 순수 구현을 곁들인)CS/자료구조 2024. 7. 30. 16:51
안녕하세요, 자료구조로 글쓰는 건 정말 오랜만입니다.Swift에서 우선순위 큐 코드를 코테에서나, 코딩 인터뷰때 사용한다면 어떻게 할까? 부터 시작해 이글을 쓰게 되었습니다.현재 제 주력언어는 Swift로, Heap과 관련된 서드파티 라이브러리 같은 게 있을거 같은데 코테에서나 인터뷰에선 해당 라이브러리를 쓰자니 곤란합니다. 물론 제한사항도 있을거구요. 다른 언어를 사용해도 되지만, 너무 단순한 대체법인 거 같습니다. 물론 사용해도 문제가 없고 다른 언어를 알고 있다면 상관 없겠지만요. 그래서 뭘 말하려고 하냐면 옛날에 큐 관련 자료를 정리 해놓고 구현해 놓았던 Heap과 우선순위 큐, 그리고 이를 사용할 수 있는 설명과 구현 코드를 제시하려 합니다. [Swift 우선순위 큐 구현코드]struct Glo..
-
Index에 관해서CS/데이터베이스 2021. 12. 6. 22:17
RDBMS의 Index란 Index, 우리가 책을 볼 때 가장 앞에서 목차를 보게된다. 그 때 각각의 항목들이 정렬돼서 원하는 주제의 내용페이지 (DB로 따지자면 특정 테이블의 데이터)를 손쉽게 찾게된다. DB도 마찬가지로 Index란 별도의 목차를 가지고 데이터를 접근하게 된다. Select문 즉 테이블의 검색속도를 향상시키기 위해 사용되는 메커니즘으로 별도의 저장공간에 정렬돼서 저장된다. Where, Order by, Join을 빈번하게 사용하는 테이블 혹은 컬럼일 경우 자주 사용된다. 자주 바뀌는 컬럼(Update, Insert, Delete)은 Index로 만들게 되면 오히려 성능이 저하될 수 있다. Index를 사용하게 되면 Full scan을 피할 수 있게 된다. full scan은 이번 주제..
-
[whiteship스터디 4주차 과제]LinkedList를 이용해 Queue 구현CS/자료구조 2021. 6. 19. 11:50
큐의 FIFO 특징을 간단하게 구현했습니다. Main 클래스 package Week4_Queue_ListNode; public class Test { public static void main(String[] args) { Queue queue = new Queue(); for (int i = 0; i < 3; i++) { queue.push(i); } System.out.println("Queue Size : " + queue.size); queue.showItems(); System.out.println(queue.pop().data); System.out.println(queue.pop().data); System.out.println(queue.pop().data); System.out.print..
-
[whiteship스터디 4주차 과제]ListNode클래스를 이용해 Stack구현CS/자료구조 2021. 5. 16. 10:39
과제 4. 앞서 만든 ListNode를 사용해서 Stack을 구현하세요. ListNode head를 가지고 있는 ListNodeStack 클래스를 구현하세요. void push(int data)를 구현하세요. int pop()을 구현하세요. package Week4_Stack_ListNode; public class ListNode { public int data; public ListNode next; ListNode(){ this.data = 0; this.next=null; } } package Week4_Stack_ListNode; public class Stack { public ListNode head; public int size = 0; public void push(int data) { ..
-
[whiteship스터디 4주차 과제]배열을 이용한 스택 구현CS/자료구조 2021. 5. 15. 09:40
Stack 클래스 package Week3_Stack; public class Stack { private int[] list; private int pointer; private int size; Stack(int size) { this.pointer = 0; this.size = size; this.list = new int[size]; } void push(int data) { if (pointer >= size) { System.out.println("OverFlow"); return; } list[pointer] = data; pointer++; //스택의 상태를 출력 for (int i = 0; i ");..
-
[whiteship스터디]single linked list 구현CS/자료구조 2021. 4. 11. 13:52
과제 2. LinkedList를 구현하세요. LinkedList에 대해 공부하세요. 정수를 저장하는 ListNode 클래스를 구현하세요. ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요. ListNode remove(ListNode head, int positionToRemove)를 구현하세요. boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요. 2021.01.26 - [스터디/[whiteship]JAVA] - [4주차]제어문 [노드 클래스] public class Node { public T data; public Node next; public Node(T data) ..
-
프로세스? 스레드?CS/운영체제 2021. 1. 2. 15:07
프로그램 어떤 작업을 위해 실행할 수 있는(CPU에 할당받을 수 있는) 파일을 말한다. 프로세스 CPU에 올라가 실행중인 프로그램을 말하며 메모리에 올라와 실행되고 있는 프로그램의 인스턴스이다. 다른말로 운영체제로 부터 시스템 자원을 할당받는 작업의 단위이기도 하다. ●할당받는 자원들 ○CPU 시간 ○주소 공간 ○Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역 프로세스 제어 블록(pocess Control Block, PCB) PCB는 특정 프로세스에 대해서 정보를 저장하고 있는 운영체제 자료구조이다. 운영체제는 프로세스를 관리하기 위해서 프로세스 생성과 동시에 PCB를 생성한다. 프로세스는 작업을 처리하다가 (문맥전환)전환이 발생하게 되면 현재 진행중인 작업을 PCB에..
-
재요청시 캐쉬는 어떻게 작동할까?CS/네트워크 2020. 12. 27. 16:35
브라우저에 요청에 따라 서버는 브라우저에게 ETag, Last-Modified, Expires, cache-Control 등등 Header 값을 전달하게 됩니다. 이에 응답받은 브라우저는 Header값에 따라 캐쉬 정책을 수행하게 됩니다. ※ 캐쉬 정책 우선순위 1. Last-Modified와 Etag가 같이 있다면, Etag가 우선순위가 높습니다. 2.Expires와 Cache-Control의 경우는 Cache-Control의 설정된 정책이 우선순위가 높습니다. (캐쉬가 만료가 되지 않아도 재검증 이라던지) 1. Last-Modified 1) 브라우저는 최초 응답 시 받은 Last-Modified값을 if-Modified-Since라는 헤더에 포함 시켜 페이지를 서버에게 요청하게 됩니다. 2) 서버는 ..