[데이터베이스] - 데이터베이스 기본 개념 (Basic Concept of Database)
·
💻 Computer Science/데이터베이스
데이터베이스의 필요성 현대 사회에서 중요한 가치 판단의 기준이 되는 "정보"는 매우 중요하다. 정보란 데이터(data)를 의사 결정에 유용하게 활용할 수 있도록 처리하여 체계적으로 조직한 결과물을 말한다. 그렇다면 "데이터"란 무엇인가? 데이터는 현실 세계에서 관찰되거나 측정하여 수집한 사실이나 값을 의미한다. 자료라고 불리기도 한다. 데이터에서 정보를 추출하는 과정 또는 방법을 "정보 처리"라고 하는데, 결국 이 정보 처리가 얼마나 잘 진행되는지가 중요한 것이다. 좋은 정보를 얻기 위해서는 정확한 데이터를 많이 수집해야 하며 수집한 데이터를 체계적으로 저장했다가 필요할 때 바로 사용할 수 있어야 한다. 이를 위한 수단을 정보 시스템이라고 하는데, 정보 시스템에서 데이터를 저장하고 필요할 때 제공하는 핵..
[운영체제] - 운영체제 개요 (Introduction of Operating System)
·
💻 Computer Science/운영체제
컴퓨터는 데이터(Data)를 처리하고, 그 처리한 결과를 출력하거나 저장한다. 이때, 데이터를 처리하는 결과를 "정보(Informaton)"이라고 한다. 컴퓨터는 크게 하드웨어와 소프트웨어로 구성되는데, 소프트웨어는 하드웨어에 명령을 내려 작업을 수행하여 데이터를 가치 있는 정보로 변환한다. 운영체제 정의운영체제란 컴퓨터 전체를 관리하고 운영하는 소프트웨어로, 컴퓨터를 관리하기 위한 기본적인 규칙과 절차를 규정하여 컴퓨터 내의 모든 하드웨어와 응용 프로그램을 관리한다. 컴퓨터 전원을 켜면 가장 먼저 실행되는 프로그램이며 사용자나 응용 프로그램들은 운영체제를 통해서만 컴퓨터 자원에 접근 가능하다. 운영체제는 주로 다음의 역할들을 수행한다.자원 관리: 운영체제는 컴퓨터 자원을 응용 프로그램에 적절히 나누어주..
[자료구조] - 해시 테이블과 해싱 (Hash Table & Hashing)
·
💻 Computer Science/자료구조-알고리즘
해싱은 "탐색 알고리즘"에 대한 공부를 전제로 합니다. 선형 탐색, 이진 탐색 등 탐색 알고리즘에 대해서 잘 알지 못한다면 이번 포스팅의 이해가 쉽지 않을 것입니다. 그렇기에 해시 알고리즘을 공부하기 전 탐색 알고리즘을 먼저 공부하고 그 후에 이 포스팅을 읽으시는 것을 추천합니다. (탐색 알고리즘 공부하기)해싱 개요탐색 알고리즘을 공부하면 배우는 "선형 탐색"이나 "이진 탐색"과 같은 방법들은 어떤 데이터가 어떤 인덱스에 있는지에 대한 정보를 전혀 알지 못할 때 진행하는 방식이며, 키를 저장된 키값과 반복적으로 비교하는 방식으로 탐색합니다. 이러한 방식은 아주 빨라야 $O(\log n)$의 시간 복잡도를 가집니다. 이 정도 시간 복잡도만 가지더라도 괜찮지만 더욱 빠른 탐색을 필요로 하는 경우, 더욱 빠른..
[알고리즘] - 탐색 알고리즘 (Searching Algorithm)
·
💻 Computer Science/자료구조-알고리즘
탐색 알고리즘 개요여러 개의 자료 중 원하는 자료를 찾는 작업을 탐색이라고 합니다. 탐색은 컴퓨터 프로그램에서 가장 많이 사용하는 작업이며 또한 많은 시간이 요구되는 작업이기에 효율적으로 하는 것이 중요합니다. 탐색 알고리즘을 구현하기 위해 사용되는 자료구조는 매우 다양합니다. 그 중 배열을 사용하여 자료를 저장하고 찾는 방식이 가장 기초적이나, 탐색 성능을 높이기 위해서는 "이진 탐색 트리"와 같은 더 나은 방식을 사용하기도 합니다. 탐색 알고리즘의 기초 단위는 "항목"입니다. 이 항목은 간단한 숫자일 수도, 구조체가 될 수도 있습니다. 항목 안에는 항목과 항목을 구별하는 "키(Key)"가 존재하며 이를 "탐색 키(Search Key)"라고 합니다. 탐색은 바로 "탐색 키와 데이터로 이루어진 여러 항목..
[알고리즘] - 정렬 알고리즘 (Sorting Algorithm)
·
💻 Computer Science/자료구조-알고리즘
정렬 알고리즘 개요 데이터를 특정한 조건에 따라 일정한 순서가 되도록 나열하는 것을 정렬이라고 합니다. 정렬 알고리즘은 프로그래밍에 있어 가장 기초적이며 또한 매우 중요한 알고리즘입니다. 정렬 알고리즘은 자료를 탐색함에 있어 필수적입니다. 정렬 알고리즘을 사용할 때, 정렬시켜야 하는 대상을 "레코드(Record)"라고 부르고 레코드는 "필드(Field)"라고 하는 단위로 나누어지니다. 이때 레코드와 레코드를 식별해주는 필드를 "키(Key)"라고 부릅니다. 정렬 알고리즘 종류 현재까지 개발된 정렬 알고리즘은 매우 많으나, 모든 경우에서 최적의 성능을 보이는 알고리즘은 존재하지 않습니다. 즉, 상황에 맞는 알고리즘을 택하여 사용해야 합니다. 이때 효율을 평가하는 기준은 정렬을 위해 필요한 "비교 연산의 횟수..
[자료구조] - 그래프 (Graph)
·
💻 Computer Science/자료구조-알고리즘
그래프 개요 오늘 다룰 그래프 자료구조의 대표적이 예시로는 지하철 노선도가 있습니다. 역들이 연결된 지하철 노선도를 그래프로 표현하면 특정 역에서 또 다른 역으로 가는 최단 경로를 계산할 수 있게 됩니다. 선형 리스트나 트리로는 표현하기 어려운 문제들을 그래프를 통하여 쉽게 해결할 수 있습니다. 지금부터 그래프 자료구조에 대해서 알아보도록 하겠습니다. 그래프의 정의와 용어 그래프는 객체 사이의 연결 관계를 표현할 수 있는 자료구조입니다. 그래프는 정점(Vertex)과 간선(Edge)의 집합입니다. 수학적으로는 $G = (V, E)$로 나타낼 수 있습니다. $V(G)$는 그래프 G의 정점들의 집합을 나타내며, $E(G)$는 그래프 G의 간선들의 집합을 나타냅니다. 지금부터 그래프 자료구조 를 이해하기 위하..
[자료구조] - 우선순위 큐와 히프 (Priority Queue, Heap)
·
💻 Computer Science/자료구조-알고리즘
우선순위 큐의 정의 우선순위 큐는 "우선 순위" 개념을 큐에 적용한 자료구조입니다. 일반적인 큐는 선입선출의 원리에 따라 "가장 먼저 들어온 데이터가 가장 먼저 나가게 됩니다." 우선순위 큐는 일반적인 큐와 달리, 데이터들이 각각 우선 순위를 가지고 우선 순위가 높은 큐가 가장 먼저 나가게 됩니다. 이러한 우선순위 큐는 여러 방법으로 구현할 수 있는데, 배열, 연결 리스트, 히프 등을 사용하여 구현할 수 있습니다. 그 중, "히프"는 완전 이진 트리로서 우선순위 큐를 구현할 때 가장 많이 사용되는 자료구조입니다. 히프의 정의 히프는 우선순위 큐를 구현하기 위한 자료구조로서, 여러 개의 값들 중에서 가장 큰 값이나 가장 작은 값을 빠르게 찾아내기 위해 만들어진 자료구조입니다. 다음과 같은 트리가 바로 히프..
loading