본문 바로가기

전체 글93

[운영체제] Chapter 1. 서론 운영체제(Operating system)은 컴퓨터 하드웨어를 관리하는 프로그램으로 응용 프로그램을 위한 기능을 제공하며, 사용자와 하드웨어 사이의 중재자 역할을 담당합니다. 1. 운영체제가 할 일 컴퓨터 시스템은 하드웨어, 운영체제, 응용프로그램, 사용자로 네 가지 구성요소이다. 하드웨어는 중앙 처리 장치(CPU), 메모리, 입출력(I/O) 장치로 구성되며, 기본 계산용 자원을 제공한다. 응용프로그램은 워드 프로세서, 스프레드시트, 컴파일러, 그리고 웹 브라우저 등과 같이 사용자의 계산 문제를 해결하기 위해 이들 자원이 어떻게 사용될지를 정의한다. 운영체제는 다양한 사용자를 위해 응용프로그램과 하드웨어간의 사용을 제어하고 조정한다. 사용자 관점(User View) 컴퓨터에 대한 사용자의 관점은 인터페이스.. 2020. 6. 14.
[운영체제] Init. Operating System Concepts 에센셜 책을 토대로 공부한 내용을 정리합니다. http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791156006220&orderClick=LEA&Kc= Operating System Concepts 에센셜 - 교보문고 ▶ 이 책은 운영체제론을 다룬 이론서입니다. www.kyobobook.co.kr 2020.06.13 - 2020. 6. 13.
[ 자료구조 ] Heap sort 힙 정렬 : 힙 정렬은 힙 트리를 이용한 정렬입니다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 // 왼쪽 자식의 인덱스 = (부모의 인덱스) * 2 // 오른쪽 자식의 인덱스 = (부모의 인덱스) * 2 + 1 // 부모의 인덱스 = (자식의 인덱스) / 2 void heap(int* array, int size) { for (int i = 1; i 0) // 최상위 부모 노트가 될 때까지 반복한다. { int root = (child - 1) / 2; if (array[root] = 0; i--) { // i == .. 2020. 2. 24.
[ 자료구조 ] Merge sort 합병 정렬 : 원소가 하나가 될 때까지 반으로 나눈 후 다시 합치는 정렬입니다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 int array1[10] = { 1, 9, 4, 10, 6, 2, 5, 3, 7, 8 }; int array2[10]; void merge(int left, int right) // 병합하며 정렬한다. { int mid = (left + right) / 2; int i = left; int j = mid + 1; int k = left; while (i 2020. 2. 24.
[ 자료구조 ] Quick sort 퀵 정렬 : 특정한 값(Pivot)을 기준으로 큰 숫자와 작은 숫자를 구분하는 정렬입니다. - 분할정복 알고리즘을 사용한다. - 피봇을 설정하고, data[i] > data[pivot]이고, data[j] j 처럼 엇갈린경우, 피봇과 j를 바꾼다. - i data[pivot] 이고 data[j] < data[pivot] 인 경우 data[i]와 data[j]를 스왑한다. - 재귀 함수를 이용해서, 분할 알고리즘을 실행한다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 int array[10] = { 1, 9, 4, .. 2020. 2. 23.
[ 자료구조 ] Insertion sort 삽입 정렬 : 앞의 원소보다 크고, 뒤에 원소보다는 작은 위치에 보내는 정렬입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 int main() { int array[10] = { 1, 9, 4, 10, 6, 2, 5, 3, 7, 8 }; int temp, j; for(int i = 0; i = 0 && array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; j--; } } return 0; } 2020. 2. 23.
[ 자료구조 ] Bubble Sort 버블 정렬 : 옆에 있는 값을 비교해서 큰값을 뒤로 보내는 과정을 반복하는 정렬입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 int main() { int array[10] = { 1, 9, 4, 10, 6, 2, 5, 3, 7, 8 }; int temp; for(int i = 0; i 2020. 2. 23.
[ 자료구조 ] Selection Sort 선택 정렬 : 가장 작은 값을 맨 앞으로 보내는 과정을 반복하는 정렬입니다. 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 int main() { int array[10] = { 1, 9, 4, 10, 6, 2, 5, 3, 7, 8 }; int min, index, temp; for(int i = 0; i 2020. 2. 23.
[ 자료구조 ] Binary Search Tree 트리(Tree)는 임의의 노드에서 다른 노드로의 경로가 하나 밖에 없는 자료구조입니다. 단 하나의 루트 노드(Root Node)가 있고, 루트 노드에서 하위 노드(Sub Node)들이 연결된 비선형 계층 구조입니다. 이진 트리 구조(Binary Tree)는 트리 자료구조 중에서 모든 노드가 최대 2개씩 자식 노드를 가질 수 있는 구조를 말합니다. 포화 이진 트리(Full Binary Tree) : 노드가 꽉 차 있는 트리입니다. 완전 이진 트리(Complete Binary Tree) : 마지막 레벨 전까지는 노드가 꽉 차있고, 마지막 레벨의 왼쪽에서 오른쪽으로 노드가 채워져 있는 트리입니다. (마지막 레벨이 다 채워지지 않아도 됨.) 편향 이진 트리(Skewed Binary Tre.. 2020. 2. 23.