총 246개
-
다항식 연산 구현: 추가, 덧셈, 비교, 출력2025.11.121. 다항식 자료구조 다항식을 표현하기 위한 두 가지 자료구조 방식이 제시된다. 첫 번째는 차수(degree)와 계수 배열(coef)을 포함하는 구조체로, 최대 차수 101까지 지원한다. 두 번째는 계수와 지수 쌍을 저장하는 terms 배열 방식으로, 희소 다항식 표현에 효율적이다. 두 방식 모두 다항식의 항들을 체계적으로 관리하고 연산을 수행하기 위한 기본 구조를 제공한다. 2. 다항식 덧셈 알고리즘 두 다항식 A와 B를 더하는 poly_add1 함수는 각 다항식의 차수를 비교하며 진행한다. 차수가 높은 항부터 결과 다항식에 복사...2025.11.12
-
C로 배우는 자료구조 6장 연습문제 - 큐와 데크2025.11.161. 큐(Queue)의 개념과 특성 큐는 FIFO(First In First Out) 선입선출 구조의 자료구조로, front에서는 삭제, rear에서는 삽입이 일어난다. 일상생활에서 줄 서기, 택시 정거장 등에서 찾을 수 있다. 선형 큐에서는 rear가 마지막 인덱스에 도달하면 포화 상태가 되는 문제가 발생하며, 이를 해결하기 위해 원형 큐를 사용한다. 원형 큐의 공백 상태는 front == rear이고, 포화 상태는 front == (rear + 1) mod n이다. 2. 원형 큐(Circular Queue)의 구현 원형 큐는 선...2025.11.16
-
[건국대학교 컴퓨터프로그래밍2 A+][2024 Ver] 과제42025.01.201. 구조체 과제(4)에서는 구조체 rect를 정의하고, 이를 원소로 가지는 배열 shapes를 선언 및 초기화합니다. 이후 for문을 통해 shapes 배열의 각 원소에 대해 calc_area 함수를 실행하여 면적을 계산하고 출력합니다. 2. 포인터 2번 문제에서는 int형 변수 x, y의 값을 swap 함수를 통해 교환합니다. swap 함수는 int형 포인터 변수 px, py를 매개변수로 받아 간접 참조를 통해 값을 교환합니다. 3번 문제에서는 레퍼런스를 사용하여 동일한 기능을 구현합니다. 3. qsort 4번 문제에서는 qso...2025.01.20
-
정렬 알고리즘 중 선택 정렬, 버블 정렬, 퀵 정렬, 병합 정렬에 대한 설명2025.01.201. 선택 정렬 선택 정렬은 간단한 비교 기반 정렬 알고리즘으로, 배열에서 가장 작은 요소를 찾아 첫 번째 위치와 교환하는 과정을 반복한다. 이 알고리즘은 구현이 매우 간단하지만, 시간 복잡도가 O(n^2)로 크기 때문에 큰 데이터 집합에서는 비효율적일 수 있다. 2. 버블 정렬 버블 정렬은 인접한 요소를 반복적으로 비교 및 교환하는 정렬 알고리즘이다. 배열을 순차적으로 탐색하면서 인접한 요소를 비교하여 필요시 교환하며 정렬한다. 이 과정을 반복하면서 가장 큰 요소가 배열의 끝으로 이동하게 되어 결국 배열이 정렬된다. 버블 정렬 역...2025.01.20
-
정렬 알고리즘 중 선택 정렬, 버블 정렬, 퀵 정렬, 병합 정렬에 대해 설명하시오2025.01.151. 선택 정렬 선택 정렬은 가장 간단한 정렬 알고리즘 중 하나이다. 리스트에서 가장 작은 항목을 선택하여 순서대로 정렬하는 방식이다. 이는 다른 정렬 알고리즘에 비해 구현이 간단하고 이해하기 쉽다. 그러나 시간 복잡도가 O(n^2)으로 큰 데이터셋에서는 비효율적이다. 2. 버블 정렬 버블 정렬은 인접한 두 요소를 비교하고 필요에 따라 위치를 교환하는 정렬 알고리즘이다. 리스트를 한 번 훑어서 가장 큰 요소를 맨 끝으로 보내는 과정을 반복하여 정렬한다. 선택 정렬과 마찬가지로 구현이 간단하지만 시간 복잡도가 O(n^2)이므로 큰 데...2025.01.15
-
퀵 알고리즘으로 정렬하는 코드를 자바 또는 파이썬으로 설계하시오2025.01.191. 퀵 정렬 알고리즘 퀵 정렬 알고리즘은 분할 정복 기법을 사용하는 효율적인 정렬 알고리즘입니다. 이 알고리즘은 배열을 피벗을 기준으로 두 부분으로 나누고, 각 부분을 재귀적으로 정렬합니다. 이 코드는 파이썬으로 구현된 퀵 정렬 알고리즘으로, 배열 [30, 60, 12, 54, 2, 45]를 정렬하는 예제입니다. 1. 퀵 정렬 알고리즘 퀵 정렬 알고리즘은 효율적이고 널리 사용되는 정렬 알고리즘 중 하나입니다. 이 알고리즘은 분할 정복 기법을 사용하여 배열을 작은 부분으로 나누고, 각 부분을 정렬한 뒤 다시 합치는 방식으로 동작합니...2025.01.19
-
자료구조 종류와 각 종류를 설명하시오2025.01.191. 배열 (Array) 배열은 컴퓨터 과학 분야에서 가장 기본적이면서도 중요한 자료구조 중 하나로, 동일한 데이터 타입의 요소들을 순차적으로 나열하여 저장하는 방식이다. 각 요소는 고유한 인덱스를 가지며, 이 인덱스를 통해 특정 요소에 빠르게 접근할 수 있다. 배열은 데이터를 연속된 메모리 공간에 저장하기 때문에 인덱스 계산만으로도 빠른 접근이 가능하며, 이로 인해 상수 시간 복잡도(O(1))로 요소에 접근할 수 있는 장점을 가지고 있다. 2. 연결 리스트 (Linked List) 연결 리스트는 자료를 노드(Node)들의 집합으로...2025.01.19
-
c언어로 쉽게 풀어쓴 자료구조 개정 3판 6장(연결리스트) 연습문제 (해설 포함)2025.05.161. 원형 연결 리스트 원형 연결 리스트는 마지막 노드의 포인터가 첫 번째 노드를 가리킨다. 2. 배열 n번째 요소를 찾는다는 것은 특정한 값을 탐색한다는 것이 아니다. 즉 특정 요소로 접근하겠다는 의미인데, 이를 가장 빠르게 할 수 있는 것은 당연히 배열이다. 배열은 인덱스를 통해 특정 요소로 가장 빠르게 접근할 수 있는 자료구조다. 한 번에 접근이 가능하므로 당연히 시간복잡도는 O(1)이다. 3. 단순 연결리스트 단순 연결리스트의 마지막 노드의 링크(link) 필드는 항상 NULL을 가리킨다. 따라서 last->link==NUL...2025.05.16
-
포인터를 사용한 2D 배열 덧셈2025.11.131. C언어 포인터 C언어에서 포인터는 메모리 주소를 저장하는 변수입니다. 포인터를 사용하면 배열의 요소에 직접 접근할 수 있으며, 동적 메모리 할당과 함수 인자 전달 등에 활용됩니다. 이 예제에서는 2D 배열의 첫 번째 요소 주소를 포인터에 저장하여 배열 요소에 접근합니다. 2. 2D 배열 연산 2D 배열은 행과 열로 구성된 2차원 데이터 구조입니다. 이 예제에서는 3x3 크기의 두 배열 a와 b의 대응하는 요소들을 더하여 새로운 배열 c를 생성합니다. 포인터를 통해 각 배열의 요소에 순차적으로 접근하여 덧셈 연산을 수행합니다. ...2025.11.13
-
정렬 알고리즘 중 선택 정렬, 버블 정렬, 퀵 정렬, 병합 정렬에 대해 설명하시오.2025.01.281. 선택 정렬 선택 정렬은 가장 단순한 정렬 알고리즘 중 하나로, 배열이나 리스트에서 정렬되지 않은 부분 중 가장 작은(또는 큰) 값을 선택해 순서대로 배치하는 방식입니다. 선택 정렬의 시간 복잡도는 O(n²)이며, 추가 메모리가 거의 필요하지 않는 장점이 있지만 정렬이 거의 완료된 경우에도 비교 횟수를 줄일 수 없어 비효율적입니다. 2. 버블 정렬 버블 정렬은 인접한 두 요소를 비교해 필요에 따라 위치를 바꾸는 방식으로 정렬을 수행하는 간단한 정렬 알고리즘입니다. 버블 정렬의 시간 복잡도는 최악 및 평균 O(n²)이지만, 배열이...2025.01.28
