CS 5

[자료구조] 비선형 자료구조(힙, 우선순위 큐, 맵, 셋, 해시테이블)

비선형 자료구조(힙, 우선순위 큐, 맵, 셋, 해시테이블)책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 힙2. 우선순위 큐3. 맵4. 셋5. 해시테이블 비선형 자료 구조란 요소가 일렬로 나열되어 있지 않고 순서나 관계가 복잡한 자료구조를 말한다.종류로는 트리, 그래프, 힙, 우선순위 큐, 맵, 셋, 해시테이블이 있다. (아래에서는 힙부터 설명한다.) 1. 힙  - 힙은 완전 이진 트리 기반의 자료구조로, 각 노드의 값이 특정 규칙에 따라 정렬된 구조이다.    - 최소힙(Min-Heap): 루트 노드에 가장 작은 값이 위치한다.    - 최대힙(Max-Heap): 루트 노드에 가장 큰 값이 위치한다.   - 힙의 삽입과 삭제는 아래와 같이 ..

CS 2024.12.17

[데이터베이스] 인덱스

인덱스책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 인덱스의 필요성2. 인덱스의 효율성    2.1 트리 구조    2.2 대수확장성3. 인덱스 만드는 방법    3.1 MySQL    3.2 MongoDB4. 인덱스 최적화 기법  1. 인덱스의 필요성- 인덱스(index)는 데이터베이스에서 테이블의 데이터를 빠르게 검색하기 위해 사용하는 데이터 구조이다.- 아래 그림과 같은 책의 '찾아보기'섹션에 비유할 수 있다.  '찾아보기'를 통해 내가 찾고자 하는 항목이 본문의 어느 위치에 있는지 빠르게 확인할 수 있다.  2. 인덱스의 효율성- 인덱스가 효율적인 이유는 크게 균형 잡힌 트리 구조와 트리 깊이의 대수확장성 때문이다.    2.1 트리..

CS 2024.11.26

[운영체제] CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 스케줄링이란?2. 스케줄링 알고리즘의 종류  2.1 비선점형 방식    2.1.1 FCFS    2.1.2 SJF    2.1.3 우선순위  2.2 선점형 방식    2.2.1 라운드 로빈    2.2.2 SRF    2.2.3 다단계 큐 1. CPU 스케줄링이란?  - 스케줄링(scheduling)은 자원을 어떤 시점에 어떤 프로세스에 할당할지 결정하는 것이다.                                                ↳여기서는 CPU를 의미함  - 목적: 자원을 효율적으로 이용하고, CPU를 공정하게 사용할 수 있도록 한다.  - 스케줄링 방..

CS 2024.11.16

[네트워크] IP주소

IP주소책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. ARP  1.1 ARP  1.2 RARP2. 홉바이홉 통신3. IP 주소 체계4. IP 주소를 이용한 위치정보 1. ARP  - 컴퓨터와 컴퓨터 간의 통신은 MAC주소를 기반으로 한다.   1.1 ARP (Address Resolution Protocol)    - IP주소를 MAC주소로 변환한다.     Q1: (필요성) 왜 IP주소를 MAC주소로 변환하는가?      - 패킷이 목적지로 도착하려면 최종적으로 MAC 주소가 필요하다.         IP 주소만으로는 로컬 네트워크 내에서 물리적인 장치를 구분할 수 없기 때문이다.     - 절차      ① A가 보내고자 하는 메세지를 ..

CS 2024.11.11

[운영체제] 프로세스

프로세스책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 프로세스란2. 프로세스와 컴파일 과정  2.1 인터프리터와 컴파일러  2.2 컴파일러를 사용하는 이유  2.3 컴파일러의 컴파일 과정3. 프로세스의 상태4. 프로세스의 메모리 구조  4.1 동적 영역  4.2 정적 영역5. PCB  1. 프로세스란  - 프로세스(process)란 프로그램을 실행하기 위해서 메모리에 올린 상태이다.    (+ 프로그램은 정적인 상태이고 프로세스는 동적인 상태이다.) 2. 프로세스와 컴파일 과정  2.1 인터프리터와 컴파일러  - 프로그램을 실행하려면 고급언어로 작성한 소스코드를 기계어로 번역해야 하는데,    이때 사용되는 방법으로는 대표적으로 인터프리터(..

CS 2024.11.05