배열의 요소를 대입하고 그 요소들을 출력해보자.배열의 요솟값을 초기화하고 배열을 선언하는 예제를 풀어보자.<결과>
출처 | DO IT 자료구조와 함께하는 알고리즘 입분메모리 구조에 대해서 알아보자.프로그램을 실행하면 운영체제는 사용할 메모리 영역을 할당한다. 할당하는 메모리 영역은 크게 3가지가 있다. (데이터, 스택, 힙)전역 변수와 정적 변수가 할당되는 영역이다.프로그램을 시작
배열과 포인터 배열을 사용하면 반드시 나오는 개념은 포인터다. 이전에 포인터에 대한 내용은 많이 다뤘기 떄문에 설명은 생략하겠다. *핵심 ) 포인터 p가 배열의 요소 e를 가리킬 때, 요소 e의 i만큼 뒤쪽의 요소를 나타내는 *(p+i)는 == p[i];
출처 | DO IT C언어 자료구조배열의 요소 역순 출력이번 시간에는 배열의 요소를 역순으로 출력하는 프로그램 및 아이디어를 살펴 볼 예정이다.예를 들어, 1\. 배열 P의 요소 개수가 7 2\. 첫 번째 순서대로 {22, 57, 11, 32, 91, 68, 70}이
출처 | DO IT C언어 자료구조(입문편) > 이번 시간에는 기수에 대해 알아보자. 기수란 수를 나타내는 데 기초가 되는 수로, 10진법에서는 0~9까지의 정수를 의미한다. 10진수 정수를 n진수 정수로 변환하려면 정수를 n으로 나눈 나머지를 구하는 동시에 그
이번 시간에는 소수의 나열에 대해 알아보겠다. 소수란? 자신과 1이외의 정수로 나누어 떨어지지 않는 정수다. 대표적으로 13은 어떤 정수로도 나누어 떨어지지 않는다. > #### 아이디어 식으로 표현하면, 2부터 n-1까지의 어떤 정수로도 나누어 떨어지지
한 해의 지난 날 수를 계산하는 프로그램을 구현해보자.
이번 시간에는 구조체에 대해 알아보자.다음은 구조체를 활용한 예제를 보자.<결과>
출처 | DO IT C언어 자료구조(입문) 이번 시간에는 이진검색, 선형검색, 해시법에 대한 얘기를 하겠다.우리는 주소록을 검색한다고 가정하면, 어떤 검색을 하게 되더라도 특정 항목에 주목한다는 점은 검색하기의 공통점이다.일반적인 자료구조에서 검색에 대한 세 가지 예가
출처 > DO IT C언어 자료구조(입문편)이번 시간에는 선형탐색에 대해서 알아보겠다.배열에서 검색하는 방법 가운데 가장 기본적인 알고리즘이다.요소가 직선 모양으로 늘어선 배열에서의 검색은 원하는 키 값을 갖는 요소를 만날 때 까지 맨 앞부터 순서대로 요소를 출력하는데
이번 시간에는 이진탐색에 대해서 알아보겠다.이진탐색오름차순 OR 내림차순으로 정렬된 배열에서 검색하는 방법이다.<그림 출처| https://medium.com/quantum-ant/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-13%E
출처 | DO IT C언어 자료구조 입문편 > bsearch 함수란? 정렬된 배열에서 검색하는 함수다. 검색 대상의 배열은 항상 정렬되어 있어야 한다. 검색하는 값과 같은 요소가 여러 개 존재하는 경우 항상 가장 앞쪽에 있는 요소를 찾아 내는 건 아니다.
출처 | DO IT C언어 자료구조 입문 > 이번 시간에는 스택에 대해 알아보자. 스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조다. 데이터의 입력과 출력 순서는 후입선출이다.(LIFO, Last In First Out) push : 스택에 데이터를 넣
이번 시간에는 스택(검색..종료) / 스택을 사용한 프로그램을 구현해보자.다음 예제는 스택을 사용하는 프로그램을 구현했다.이번 예제는 파일분할, 스택 관련 공부가 필수적이다.이번 시간에 공부한 내용을 요약하면,Stack의 검색 -> 종료 과정 함수 구현스택을 사용하는
참고 | DO IT C언어 자료구조 입문편 🤷♀️ 이번 시간에는 큐에 대해서 알아보겠다. 큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 두기 위한 자료구조다. 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출 구조를 이루고 있다. 대표적인 예시로 은행
출처 | DO IT C언어 자료구조 입문편 그림 출처 | https://ahribori.com/article/59262cf0c686bd0d48e960e2 재귀란 어떤 사건이 자기 자신을 포함하고 자기 자신을 사용하여 정의될 때 재귀적이라고 한다. 순차곱셈 구하기
출처 | DO IT C언어 자료구조 입문편 이번 시간에는 알고리즘을 분석하기 위해 하향식 분석 / 상향식 분석을 살펴보겠다. 다음 예제를 보자. recur 함수는 factorial 함수나 gcd 함수와 달리 함수 안에서 재귀 호출을 2번 실행한다. recur 하
이번 시간에는 시간복잡도 big-o 예제에 대해서 알아보겠다.시간 복잡도에 대한 개념 및 설명은 생략하겠다.T(n) = n ∈ O(n) T(n) = n+2n+3n = 6n ∈ O(n)T(n) = n \* n = n^2 ∈ O(n^2)T(n) = 10000n + n \*
이번 시간에는 재귀함수 두 번째 시간이다. 재귀함수를 이용하면 복잡한 코드를 간결하게 표현 가능하다. 대표적인 예시로 하노이탑이 있다.작은 원반이 위에, 큰 원반이 아래에 위치할 수 있도록 원반을 3개의 기둥 사이에서 옮기는 문제다. 이 상태에서 모든 원반을 세 번 째
이번 시간에는 버블 정렬에 대해서 알아보겠다. 버블정렬 오름차순으로 배열을 정렬하고자 한다면 왼쪽의 값이 오른쪽의 값보다 작아야 한다. Fist pass를 보면, n개인 배열에서 n-1회 비교, 교환을 하고 나면 가장 작은 요소가 맨 처음으로 이동한다. 이어서
이번 시간엔 최대부분배열을 구현해보자.길이가 n인 배열 A0, A1, ..., An-1 이 입력으로 주어 질때, i번째부터 j번째까지 원소드로 이루어진 배열 Ai, ..., Aj 를 부분배열이라고 하고, Ai, j 로 나타낸다.부분 배열의 속한 원소들의 합이 최대가 되
연결리스트를 이용한 선형리스트에 대해 알아보겠다.연결리스트는 배열과 달리 미리 메모리를 할당해놓는 것이 아니라, 사용자가 필요로 할 때, 메모리를 할당받기 때문에 여분의 공간을 마련할 필요가 없어 메모리를 절약할 수 있다.연결 리스트는 다음 노드에 대한 위치정보를 링크
이번 시간에는 트리에 대해서 알아보겠다. 트리 노드 : 트리의 구성요소 루트 : 부모가 없는 노드 레벨 : 트리의 각층 번호 높이 : 트리의 최대레벨 차수 : 노드가 가지고있는 자식노드의 개수 간선 : 트리에 연결된 모든선 서브트리 : 하나의 노드와 자손
이진 트리에서 가장 흔한 연산은 트리 순회, 즉 트리의 모든 노드를 한번씩 방문하는 것이다. 한 노드에서 취할 수 있는방법은 모두 6개이지만 항상 왼쪽 서브트리를 순회 한다는것을 대전제로 3가지의 순회방법만 가능하게 된다. 그것이 중위 순회(inorder travers
이번 시간엔 AVL 트리에 대해서 알아보자.이진 탐색 트리에서 탐색(Search), 삽입(Insert),삭제(Delete) 등의 연산은 트리의 높이 ℎ에 비례하는 시간 즉, 𝑂(ℎ) 시간이 소요된다.이진 탐색 트리의 높이를 𝑂(log 𝑛)으로 제한할 수있으면, 위
graph 그래프란 일련의 노드(node, vertex, 정점, 꼭지점) 집합 V와 엣지(edge, 간선, 변) 집합 E로 구성된 자료구조의 일종입니다. 일반적으로 노드엔 데이터, 엣지엔 노드와 노드 사이의 관계 정보가 포함되어 있습니다. 이를 그림으로 나타내면 다음과
그래프 탐색 및 순회 중에서 깊이 우선 탐색에 대해 알아보자.현 경로상의 노드들만 기억하면 되므로 저장공간 수요가 비교적 적다.목표 노드가 깊은 단계에 있을 경우 해를 빨리 구할 수 있다.해가 없는 경로가 깊을 경우 탐색시간이 오래 걸릴 수 있다.얻어진 해가 최단 경로
이번 시간에는 BFS(너비 우선 탐색)에 대한 내용이다.BFS(Breadth First Search, 너비 우선 탐색)DFS는 스택 자료구조를 활용해 구현했다면, BFS는 Queue를 활용한다.DFS는 갈 수 있는 곳까지 들어가서 확인하고, 갈 곳이 없으면 다시 되돌아
이번 시간에는 덱에 대해서 알아보자.덱(deque)은 double-ended queue의 줄임말로써 후단(rear)으로만 데이터를 삽입했던 기존 선형 큐, 원형 큐와 달리 큐의 전단(front)와 후단(rear)에서 모두 삽입과 삭제가 가능한 큐다.
이번 시간엔 이진힙에 대해서 알아보겠다. 이진힙이란 우선 순위 큐를 위해서 만들어진 완전 이진 트리의 한 종류이다. 즉, 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조다. 이진 힙은 힙 중에서 가장 널리 쓰이며 힙의 특징(ex. 최대힙
이번 시간에는 삽입정렬에 대해서 알아보겠다.손안의 카드를 정렬하는 방법과 유사하다.새로운 카드를 기존의 정렬된 카드 사이의 올바른 자리를 찾아 삽입한다.새로 삽입될 카드의 수만큼 반복하게 되면 전체 카드가 정렬된다.자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬
이번 시간엔 쉘 정렬에 대해 알아보자.‘Donald L. Shell’이라는 사람이 제안한 방법으로, 삽입정렬을 보완한 알고리즘이다.삽입 정렬이 어느 정도 정렬된 배열에 대해서는 대단히 빠른 것에 착안삽입 정렬의 최대 문제점: 요소들이 삽입될 때, 이웃한 위치로만 이동즉
이번 시간에는 퀵 정렬에 대해 알아보겠다. 퀵 정렬 알고리즘의 개념 요약 ‘찰스 앤터니 리처드 호어(Charles Antony Richard Hoare)’가 개발한 정렬 알고리즘 퀵 정렬은 불안정 정렬 에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정
이번 시간에는 mergesort에 대해서 알아보겠다.‘존 폰 노이만(John von Neumann)’이라는 사람이 제안한 방법일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬 에 속하며, 분할 정복 알고리즘의 하나 이다.분할 정복(divide and conquer)
이번 시간에는 기초적인 그래프에 대해서 알아보겠다. 그래프는 정점(Vertex)과 간선(Edge)으로 이루어진 자료구조이다.정확히는 정점(Vertex)간의 관계를 표현하는 조직도라고 볼 수 있다.이러한 면에서 트리는 그래프의 일종인 셈이다하지만 그래프는 트리와는 달리
출처 | https://www.youtube.com/watch?v=n4kbFRn2z9M 이번 시간에는 계수정렬에 대해서 알아보겠다. 계수정렬이란? 주어진 배열의 값 범위가 작은 경우 빠른 속도를 갖는 정렬 알고리즘이다. 최댓값과 입력 배열의 원소 값 개수를 누적합
참고 | https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html제자리 정렬(in-place sorting) 알고리즘의 하나입력 배열(정렬되지 않은 값들) 이외에 다른 추가 메모리를 요구하지
출처 | https://www.youtube.com/watch?v=IWpJsoX_UmUhttps://github.com/jewerlykim/HashtableImplementationByC해시테이블은 데이터의 양이 많을 경우 생기는 데이터 검색에 대한