일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gpt
- regression
- LG
- 머신러닝
- 분류
- PCA
- AI
- LLM
- 딥러닝
- LG Aimers 4th
- Classification
- ChatGPT
- supervised learning
- Machine Learning
- GPT-4
- 해커톤
- 티스토리챌린지
- deep learning
- OpenAI
- LG Aimers
- 오블완
- 지도학습
- 회귀
- Today
- Total
목록Data Structure & Algorithm (24)
SYDev
FIFO구조를 가지는 자료구조인 queue에 대해 이해하고, 추가적으로 queue와 비슷한 deque을 구현해보자. 큐 큐은 가장 처음에 들어간 데이터가 가장 먼저 나오는 선입선출, FIFO(First-In, First-Out)의 자료구조를 가진다. 큐 자료구조의 ADT void QueueInit(Queue * pq); - 큐의 초기화를 진행한다. - 큐 생성 후 제일 먼저 호출되어야 하는 함수이다. int QIsEmpty(Queue * pq); - 큐가 빈 경우 TRUE(1)를, 그렇지 않은 경우 FALSE(0)을 반환한다. void Enqueue(Queue * pq, Data data) - 큐에 데이터를 저장한다. 매개변수 data로 전달된 값을 저장한다. Data Dequeue(Queue * pq)..
LIFO구조를 가지는 자료구조인 stack에 대해 이해하고, stack을 이용해 계산기를 구현해보자. 스택 스택은 가장 마지막에 들어간 데이터가 가장 먼저 나오는 후입선출, LIFO(Last-In, First-Out)의 자료구조를 가진다. 스택 자료구조의 ADT void StackInit(Stack * pstack); - 스택의 초기화를 진행한다. - 스택 생성 후 제일 먼저 호출되어야 하는 함수이다. int SIsEmpty(Stack * pstack); - 스택이 빈 경우 TRUE(1)를, 그렇지 않은 경우 FALSE(0)을 반환한다. void SPush(Stack * pstack, Data data); - 스택에 데이터를 저장한다. 매개변수 data로 전달된 값을 저장한다. Data SPop(Stac..
단순 연결 리스트의 개념을 확장한 원형, 양방향 연결 리스트를 구현해보자. 자료구조를 구현할 때, 먼저 그림으로 그려보고 구조를 파악하는 것이 상당히 도움이 되었다. 원형 연결 리스트(Circular Linked List) 원형 연결 리스트의 기본 구조와 내부 함수는 다음과 같이 도식화할 수 있다. 파일명: CLinkedList.h #ifndef __C_LINKED_LIST_H__ #define __C_LINKED_LIST_H__ #define TRUE 1 #define FALSE 0 typedef int Data; typedef struct _node { Data data; struct _node * next; } Node; typedef struct _CLL { Node * tail; Node * c..
'연결'을 기반으로 하는 리스트의 기본을 이해하고, 구현해보자. 연결 리스트의 개념적인 이해 아래와 같이 메모리가 정적인 배열을 이용해 데이터를 저장하면, 메모리의 길이를 변경하는 것이 불가능하다는 단점이 있다. #include int main(void) { int arr[10]; int readCount = 0; int readData; int i; while(1) { printf("자연수 입력: "); scanf("%d", &readData); if(readData next = NULL; if(head == NULL) head = newNode; else ..
자료구조에서의 추상 자료형(ADT)을 이해하고, 배열 기반 리스트를 구현해보자. 추상 자료형(ADT; Abstract Data Type) ADT: 구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것을 의미한다. 예를 들어 Wallet이라는 구조체가 있을 때, 이 구조체에 돈을 넣을 수도 있고 꺼낼 수도 있다. 이를 ADT로 변환하면 다음과 같다. Wallet의 ADT int TakeOutMoney(Wallet * pw, int coinNum, int billNum) - 첫 번째 인자로 전달된 주소의 지갑에서 돈을 꺼낸다. - 두, 세 번째 인자로 꺼낼 동전의 수와 지폐의 수를 전달한다. - 꺼내고자 하는 돈의 총액이 반환된다. 그리고 그만큼 돈은 차감된다. void PutMo..
구조체 구조체: 하나 이상의 변수들을 그룹화하여 만든 새로운 자료형 구조체 선언 struct computer { int monitor; //멤버 선언 int keyboard; int ram; }; int main() { struct computer c1; //구조체 변수 c1 선언 return 0; } 구조체 초기화 struct computer { int monitor; int keyboard; int ram; }; int main() { struct computer c1 = { 30, 1, 16 }; } 구조체 멤버 접근 c1.monitor = 30;//구조체변수이름.멤버이름 -> 해당 형태로 접근 가능 c1.keyboard = 10; c1.ram = 4; printf("c1의 monitor: %d\n..
재귀함수를 이해하고, 이를 활용하여 팩토리얼·피보나치 수열 등 여러 함수를 구현해보자. 재귀함수의 기본적인 이해 재귀함수: 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다. 재귀함수의 작동 원리는 위 그림의 형태와 같이 별도로 설정하지 않으면 멈추지 않고 계속 실행된다. 따라서, 특정 조건을 충족했을 때 재귀함수 호출이 멈추도록해야 하는데, 여기서 이 조건을 '재귀의 탈출조건'이라 한다. 이와 관련된 예제를 살펴보자. #include void Recursive(int num) { if(num Recursive 함수에 0이 전달되면 '재귀의 탈출조건' 성립 팩토리얼: factorial 팩토리얼의 수식적 의미는 다음과 같다. $n! = n * (n-1) * (n-2) * . . . . * 2 * 1$..
자료구조와 알고리즘에 대한 기본적인 개념을 이해하고, 알고리즘의 성능분석 방법에 대해 알아보자. 자료구조 프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다. 여기서 데이터의 표현은 데이터의 저장을 포함하는 개념이고, 이런 데이터의 저장을 담당하는 것이 자료구조이다. 쉽게 말해서 자료구조란, 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 자료구조 종류 선형구조 비선형구조 파일구조 단순구조 리스트 트리 순차파일 정수 스택 그래프 색인파일 실수 큐 직접파일 문자 문자열 자료구조와 알고리즘 알고리즘은 표현 및 저장된 데이터를 대상으로하는 '문제 해결 방법'을 뜻한다. 알고리즘은 자료구조에 의존적이다. 자료구조의 형태에 따라 알고리즘의 선..