DFS (Depth First Search) 깊이 우선탐색으로 말 그대로 탐색할 수 있는 만큼 깊게 들어가 순차적으로 탐색하는 방법이다. 아래와 같은 그래프 형태에서 한 시작점 노드(v)에서 연결된 모든 노드(w1,w2,w3)들 중 w1부터 탐색하는데 한번 w1를 탐색하면 해당노드(w1)에 연결된 노드들을 우선적으로 찾아 계속 연결된 노드를 탐색한다. w1의 탐색이 완료되면 다시 v기준으로 w2를 탐색하고 이를 반복한다. 이를 소스로 구현하면 다음과 같다.12345678910111213141516171819202122232425262728293031323334353637#includeusing namespace std;int maps[10][10];int visited[10]={0};int num;voi..
안녕하세요 오늘은 삽입정렬을 C언어로 구현해보겠습니다. 삽입정렬이란 기존의 배열의 모든 값을 앞부터 정렬된 배열과 비교하여 들어갈 위치를 찾고, 그 위치에 삽입하며 정렬해나가는 방법입니다. 바로 소스를 통해 알아보겠습니다. 1234567891011121314151617181920#include int main(){ int arr[5]={5, 16, 1, 4, 12}; int temp; for(int i=0;i arr[j+1])&&(j>=0)){ temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; j--; } } for(int i=0;i
안녕하세요 , 이번엔 C언어 알고리즘의 기초인 버블정렬(bubble sort)를 C로 구현하겠습니다. 정렬에는 삽입정렬, 버블정렬, 선택정렬 등 여러가지 방법이 있습니다. 그 중 버블정렬이란, 배열 내의 처음부터 인접한 두 데이터를 비교하며 값이 큰 데이터를 뒤로 바꾸면서 배열의 끝까지 반복하여 정렬하는 법입니다. 여러 정렬법중에 코드는 가장 간단하지만 시간이 가장 오래걸린다는 단점이 있습니다. 이를 C로 구현해보았습니다. 123456789101112131415161718192021222324#include int main(){ int arr[5]={10, 3, 15, 12, 1}; int temp; //swap을 위해 선언 for(int i=0;i
안녕하세요 이번엔 C언어로 Stack을 구현해보겠습니다. 자료구조의 매우 기초적인 개념인 Stack이란 영어로 쌓아놓은 더미란 뜻입니다. LIFO(Last In First Out) 방식으로 가장 최근에 들어온 데이터가 가장 먼저 나가게 됩니다. 스택의 구조는 위와 같이 더미처럼 구성되어 있고 push&pop을 통해 데이터를 입력 또는 출력 할 수 있습니다. 단, 출력시에는 더미의 가장 위에있는 데이터를 빼온 다는 것이 매우 중요합니다. 이제 C언어로 구현해보도록 하겠습니다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #..
안녕하세요 오늘은 C언어로 재귀함수를 구현해보겠습니다. 저번에 설치한 Dev C++ 컴파일러를 사용하였습니다. 재귀함수란 자기 자신을 호출하는 함수인데요, 팩토리얼(factorial)이라는 함수를 구현하면서 살펴보겠습니다. 12345678910111213141516#include int factorial(int n){ if(n==0) return 1; else return n*factorial(n-1);}int main(){ int n; printf("수를 입력하세요: "); scanf("%d",&n); printf("%d",factorial(n)); return 0; } cs 전체 소스코드입니다. factorial이라는 새로운 함수를 main함수 위에 정의해주었구요, 값을 알고싶은 변수 n이 1이면 1..
- Total
- Today
- Yesterday