컴퓨터과학 7

그래프(Graph) 자료구조와 최단 경로 알고리즘 (다익스트라, 플로이드 워셜)

1. 그래프(Graph) 자료구조란? 그래프(Graph)는 정점(Vertex)과 간선(Edge)으로 구성된 자료구조로, 객체들 간의 관계를 표현하는 데 사용된다. 정점(Vertex, 노드): 데이터를 저장하는 개체 (예: 도시, 사람, 컴퓨터)간선(Edge): 정점 간의 연결 관계를 나타내는 요소 (예: 도로, 네트워크 링크)그래프는 소셜 네트워크 분석, 지도 네비게이션, 네트워크 라우팅, 인공지능(AI) 경로 탐색 등 다양한 분야에서 활용된다.2. 그래프의 종류2-1. 방향 그래프 vs 무방향 그래프무방향 그래프(Undirected Graph): 간선의 방향이 없으며, 양방향으로 이동 가능예) A—B (A에서 B로 갈 수도 있고, B에서 A로도 갈 수 있음)방향 그래프(Directed Graph, DA..

컴퓨터공학 2025.03.16

해시 테이블(Hash Table)의 구조와 활용 사례

1. 해시 테이블이란? 해시 테이블(Hash Table)은 키-값(Key-Value) 구조를 활용하여 데이터를 빠르게 저장하고 검색하는 자료구조이다. 해시 함수를 이용해 데이터를 특정한 위치에 저장하고, 필요한 값을 빠르게 찾을 수 있도록 한다. 해시 테이블은 **배열(Array)과 연결 리스트(Linked List)**를 조합하여 빠른 탐색, 삽입, 삭제가 가능한 자료구조이다.1-1. 해시 테이블의 기본 원리**해시 함수(Hash Function)**를 사용하여 키(Key)를 특정 인덱스(Index)로 변환한다.변환된 인덱스에 해당 데이터를 저장한다.검색할 때도 동일한 해시 함수를 사용하여 데이터를 빠르게 찾을 수 있다.2. 해시 테이블의 동작 과정2-1. 데이터 저장 과정키(Key)를 해시 함수(Ha..

컴퓨터공학 2025.03.16

탐색 알고리즘 개념 (이진 탐색, DFS, BFS)

1. 탐색(Search) 알고리즘이란?탐색 알고리즘은 원하는 데이터를 찾기 위한 방법론이다. 다양한 데이터 구조에서 탐색할 수 있으며, 효율적인 탐색을 위해 알고리즘을 적절히 선택하는 것이 중요하다. 대표적인 탐색 알고리즘에는 **이진 탐색(Binary Search), 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)**가 있다.2. 이진 탐색 (Binary Search)2-1. 이진 탐색 개념이진 탐색은 정렬된 배열에서 특정 값을 찾는 효율적인 알고리즘이다. 일반적인 선형 탐색(순차 탐색, O(n))보다 빠르게 동작하며, **시간 복잡도는 O(log n)**이다. 2-2. 이진 탐색 동작 원리배열의 중간 값을 확인한다.찾고자 하는 값이 중간 값보다 작으면 왼쪽 부분 배열을 탐색한다.찾고자 하는 값이 ..

컴퓨터공학 2025.03.16

정렬 알고리즘 비교 (버블 정렬, 퀵 정렬, 병합 정렬)

1. 정렬 알고리즘이란?정렬 알고리즘은 주어진 데이터 집합을 오름차순 또는 내림차순으로 정렬하는 방법을 의미한다. 정렬 방식에 따라 성능 차이가 크며, 상황에 따라 적합한 알고리즘을 선택하는 것이 중요하다. 정렬 알고리즘의 성능은 **시간 복잡도(Time Complexity)**와 **공간 복잡도(Space Complexity)**를 기준으로 평가된다. 시간 복잡도: 데이터 개수(n)에 따른 연산 횟수 (Best / Average / Worst Case 분석)공간 복잡도: 추가적으로 필요한 메모리 사용량2. 버블 정렬 (Bubble Sort) 버블 정렬은 가장 단순한 정렬 알고리즘 중 하나로, 인접한 두 개의 데이터를 비교하여 큰 값을 뒤로 보내는 방식을 반복한다. 즉, 가장 큰 값이 거품처럼 위로 올라..

컴퓨터공학 2025.03.15

프로세스 상태: 생성, 실행, 대기, 종료

1. 프로세스란?컴퓨터에서 프로그램이 실행되면, 운영체제는 해당 프로그램을 **프로세스(Process)**로 관리한다. 즉, 프로세스는 실행 중인 프로그램을 의미하며, CPU와 메모리를 할당받아 동작한다. 운영체제는 컴퓨터의 리소스를 효율적으로 사용하기 위해 여러 개의 프로세스를 동시에 실행할 수 있도록 멀티태스킹(Multitasking) 환경을 제공한다. 이 과정에서 운영체제는 프로세스를 여러 가지 상태로 나누어 관리하며, 각 상태 간 전환이 이루어진다.1-1. 프로세스와 프로그램의 차이많은 사람들이 "프로세스"와 "프로그램"을 혼동하지만, 두 개념은 다르다.  구분 프로그램 프로세스 정의실행 가능한 명령어와 데이터의 집합실행 중인 프로그램저장 위치하드디스크(SSD/HDD)RAM(메모리)실행 여부실..

컴퓨터공학 2025.03.06

프로세스와 스레드의 차이: 개념과 실행 방식

1. 프로세스와 스레드란? 기본 개념 이해컴퓨터에서 프로그램을 실행하면 **프로세스(Process)**가 생성된다.프로세스는 실행 중인 프로그램을 의미하며, 내부에서 여러 개의 **스레드(Thread)**를 가질 수 있다.프로세스(Process): 실행 중인 하나의 독립적인 프로그램스레드(Thread): 프로세스 내에서 실행되는 작업의 단위1-1. 프로세스(Process)의 특징운영체제가 할당하는 독립적인 작업 단위각각의 프로세스는 별도의 메모리 공간을 가짐다른 프로세스와 독립적으로 실행됨1-2. 스레드(Thread)의 특징프로세스 내부에서 실행되는 작은 실행 단위같은 프로세스 내에서는 메모리를 공유함멀티스레딩을 사용하면 동시에 여러 작업을 처리할 수 있음2. 프로세스와 스레드의 차이점 비교 항목 프로..

컴퓨터공학 2025.03.05

컴퓨터 공학이란? 개념과 주요 연구 분야

1. 컴퓨터 공학의 정의와 역할컴퓨터 공학(Computer Engineering)은 컴퓨터 시스템의 설계, 개발, 최적화를 연구하는 학문이다. 단순히 프로그래밍만 배우는 것이 아니라, 하드웨어와 소프트웨어를 융합하여 효율적인 시스템을 구축하는 것이 핵심이다.이 학문은 IT 산업의 근간이 되며, 인공지능(AI), 빅데이터(Big Data), 클라우드 컴퓨팅(Cloud Computing), 사물인터넷(IoT) 등 다양한 기술과 밀접한 연관이 있다. 컴퓨터 공학 전공자는 하드웨어부터 소프트웨어까지 다양한 분야에서 활동할 수 있으며, 소프트웨어 개발자, 시스템 엔지니어, 데이터 과학자, 보안 전문가 등 다양한 직업으로 진출할 수 있다.2. 컴퓨터 공학의 주요 연구 분야컴퓨터 공학은 여러 세부 분야로 나뉘며, 각..

컴퓨터공학 2025.03.05