반응형
SMALL

Algorithms 7

[Algorithms] 이진 탐색트리(Binary Search Tree)

이번 학습 주제는 이진 탐색트리(Binary Search Tree)입니다 앞에서 이진 탐색(Binary Search)과 선형 탐색(Linear Search)을 학습했습니다 이진 탐색과 선형탐색이 궁금하시다면 아래의 링크 ↓↓ 2020/07/27 - [Algorithms] - [Algorithms] 선형 탐색(Linear Search)과 이진 탐색(Binary Search) [Algorithms] 선형 탐색(Linear Search)과 이진 탐색(Binary Search) 하루 하루가 순식간이네요😱 오늘도 학습을 하고 잠을 청해야겠습니다 오늘의 학습 주제는 탐색 알고리즘 중에 가장 단순한 탐색 알고리즘인 선형탐색(Linear search) 혹은 순차탐색(Sequential Search) yssa.tisto..

Algorithms 2020.07.31

[Algorithms] 선형 탐색(Linear Search)과 이진 탐색(Binary Search)

하루 하루가 순식간이네요😱 오늘도 학습을 하고 잠을 청해야겠습니다 오늘의 학습 주제는 탐색 알고리즘 중에 가장 단순한 탐색 알고리즘인 선형탐색(Linear search) 혹은 순차탐색(Sequential Search)과 이진탐색(Binary Search)입니다 먼저 선형 탐색은 데이터가 저장되어 있는 배열 또는 선형 리스트를 선두에서부터 하나씩 비교해 찾고자 하는 데이터가 발견될 때까지 검사하는 탐색법입니다 #include #define true 1 #define false 0 #define SIZE 100 typedef int index; typedef int keytype; typedef int boolean; typedef char othertype; index n = -1; struct array..

Algorithms 2020.07.27

[Algorithms] 유클리드(Euclid) 호제법

미루고 미루다 드디어 알고리즘(Algorithms) 학습을 시작! 알고리즘이란 어떤 문제를 해결하기 위한 절차를 기술해 놓은 것입니다 절차는 어떠한 작동을 어떠한 순서로 행할 것인가를 나열한 것인데요 크게 아래의 4가지 특성을 만족해야 합니다 특성 설명 Preciseness(엄밀성) 기술된 내용은 한 가지 이상의 의미를 포함하지 않도록 해야 함 Effectiveness(실효성) 기술된 내용은 반드시 주어진 상황에 영향을 주어서 실제로 상황을 변화시키는 효과가 있어야 함 Input/Output(입출력) 반드시 입력이 주어지고 이러한 입력에 절차를 행한 실제 효과를 반영하는 출력이 있어야 함 Termination(종료성) 기술된 절차는 반드시 종료 상태에 도달해야 함 알고리즘의 종류로는 순차(Serial),..

Algorithms 2020.07.26

[Algorithms] 재귀적 프로그래밍(Recursive Programming)_2

재귀적 프로그래밍(Recursive Programming) 두번째 시간으로 n개의 원소를 가지는 집합에서 크기가 r인 부분집합을 고르는 경우의 수 즉, 이항계수를 작성해보겠다 이항계수를 식으로 나타내면 아래와 같다 위와 같이 재귀적으로 함수를 작성할 때에는 중복 계산이 발생해 효율이 나빠질 수 있으므로 주의해야하고 메모이제이션(memoization) 처리 등을 해줘야한다 위의 코드에서는 keep_result 배열에 처리 결과를 저장하고있다 이제 유명한 피보나치(Fibonacci) 수열을 작성해보자 먼저 피보나치(Fibonacci) 수열은 중복계산이 나타나므로 앞서 이항계수를 구할 때처럼 메모이제이션(memoization) 처리한다 참고로 동적 프로그래밍으로도 작성해보았다 그런데 메모이제이션을 통해서든 동..

Algorithms 2019.08.12

[Algorithms] 재귀적 프로그래밍(Recursive Programming)_1

지난 번에 연결리스트를 이용한 큐를 작성하였다 enqueue()함수를 통해 int형 값을 큐(Queue)에 저장하고 dequeue()함수를 통해 큐(Queue)에 저장된 순서대로 하나씩 출력하였는데 큐에 저장된 모든 원소(값)들을 모두 출력하고 싶다면 어떻게 해야할까? 가장 쉽게 떠올릴 수 있는 방법은 head node부터 차례로 출력하는 것이다 자, 그런데 제목이 재귀적 프로그래밍이다 이 dynamic_print_list()함수를 recursive_print_list()함수로 변경해보자 재귀적 프로그래밍(Recursive Programming)을 설명할 때 가장 많이 나오는 인용구는 GNU("GNU's Not Unix!")인데 GNU를 설명하기 위해 자기 자신을 이용하고있기 때문이다 사실 재귀적 프로그..

Algorithms 2019.08.12

[Algorithms] 연결리스트(Linked List)를 이용한 큐(Queue)

오늘은 큐(Queue)를 구현해보는 두번째 시간으로 연결리스트(Linked List)를 이용할 것이다 연결리스트(Linked List)는 노드(구조체)가 여러 종류의 데이터 타입을 담고 있는채로 서로 연결되어 있는 자료구조이다 이를 구현하기 위해서는 먼저.C의 구조체(Struct), 포인터(Pointer)를 숙지해야 구현 가능하지만 설명은 생략하겠다 연결리스트도 구현하기에 따라서 이중 연결리스트(Doubly linked List), 이중 원형 연결리스트 등이 있다 위의 코드에서 head는 선두 노드를 tail은 마지막 노드를 가리킨다 즉, dequeue()함수를 통해 head가 가리키는 노드의 값을 출력하고 enqueue()함수를 통해 생성된 노드가 tail이 된다 배열(Array)로 생성한 큐보다 연결..

Algorithms 2019.07.29

[Algorithms] 배열을 이용한 큐(Queue)

오늘은 큐(Queue)를 구현해보자 큐는 선입선출 FIFO(First In First Out)로 들어온 순서대로 나가는 형태의 자료구조다 큐와 같은 형태를 일상에서 찾자면 은행 창구, 식당 등에서 이용하는 대기번호가 있다 대기번호를 먼저 뽑은 사람이 해당 서비스를 먼저 이용하는 것이다 고딩 점심시간 조금이라도 빨리 먹기 위해 냅다 뛰는 이유도 배식 받는 것이 큐와 같아서-_- 어찌되었든 큐를 구현해보자 위의 코드는 크기가 5인 큐를 구현한 것이다 이 프로그램을 돌려보면 잘 돌아간다-_- 사실 enqueue() 함수룰 5번 호출 후에 dequeue() 함수를 1번 호출하고 다시 enqueue() 함수를 호출하면 에러("index out of bound exception")가 발생해야하지만 C언어가 inde..

Algorithms 2019.07.18
반응형
LIST