전체 글(333)
-
Queue Put / Get
큐는 배열형태로 사용하는 것이 링크드리스트를 사용하는 것보다 쉽고 편리하다. Queue 는 First In First Out 으로 먼저 들어간 것이 먼저 나오는 형태 int Queue[100]; // 배열선언 int front = 0 , rear = 0 ; void Put( int num ){ Queue[rear] = num ;rear++; if ( rear >= 100 ){rear = 0 ;}} int Get(void){int result = 0;result = Queue[front];front++; if( front >= 100 ){front = 0 ;} return result ;} int main ( void ) { put( 1 );put( 3 );put( 5 ); get()..
2017.04.07 -
스택 ( Stack push함수 , Stack pop함수 )
스택알고리즘1. 푸시( push )- 데이터를 순서를 적용해 차례로 저장한다.2. 팝( pop )- 가장 최신 데이터부터 차레로 가져온다. typedef struct _Node{ // 구조체 선언int Data;struct _Node* Next;} Node; void InitializeStack(void){ // stack 초기화head = (Node*)malloc(sizeof(Node));end = (Node*)malloc(sizeof(Node));head->Next = end ;end->Next = end ;} // push함수void push( int num ){Node* ptr = (Node*)malloc(sizeof(Node)); ptr->data = num ; // 스택에 num 저장ptr->..
2017.04.06 -
링크드리스트 ( Linked List )
#include#includetypedef struct _Node { // 구조체선언char Data;struct _Node *Next} Node;Node *head , *end , *temp;Node *temp1 , *temp2 , *temp3 , *temp4 ; void Initialize(void){ // 단일 링크드 리스트 생성함수Node *p ;head = (Node*)malloc(sizeof(Node));end = (Node*)malloc(sizeof(Node)); temp1 = (Node*)malloc(sizeof(Node));temp1->Data = 'A';head->Next = temp1;temp1->Next = end;end->Next = end;p = tem..
2017.04.05 -
삽입정렬(InsertSort) & 버블정렬(BubbleSort)
1. 삽입정렬 ( InsertSort ) 원리 : 선택한 요소가 들어갈 있는 자리를 찾아서 삽입시킨다. #includevoid insert_sort ( int arr[] , int end ) { int i = 0 , j = 0 , temp = 0 ; for( int i = 0 ; i temp && j > 0 ){ arr [ j ] = arr [ j-1 ];j--;}arr [ j ] = temp ;}} int main ( void ){int arr[] = { 5 , 4 , 2 , 3 , 1 };int i = 0 ;insert_sort( arr , 4 );for ( i = 0 ; i i , j = 0 : 5 4 ..
2017.03.27 -
Fibonacci & Dynamic Programming( 피보나치수열 & 동적계획법)
피보나치수열 과 동적계획법 원리 : n번째 수 = n-1번째 수 + n-2번째 수 0 , 1 , 1 , 2 , 3 , 5 , 8 ... #includeint fibonacci ( n ) { if ( n == 0 ) { return 0 ;}else if ( n == 1 ){return 1;}else {return fibonacci( n - 1 ) + fibonacci( n - 2 ) ;}} int main( void ) { int n = 0 ;int result = 0;scanf( "%d" , &n ); result = fibonacci ( n ) ; printf("%d\n" , result ); return 0;} ------- 위 알고리즘은 똑같은 식을 계산하는 불필요한 과..
2017.03.25 -
BinarySearch ( 이진검색 )
Binary Search( 이진검색 ) 조건1 : 자료가 오름차순으로 정렬되어 있어야 한다. 조건2 : 자료들의 값은 서로 다른 값이어야한다. 소스코드 #include int binary_search ( int arr[] , int start , int end , int target ){ int mid = 0 ; if ( start > end ){return -1 ;} else { if ( arr [ mid ] = target ) { // 목표값을 찾아냄 return mid ; } else if ( arr [ start ] < target ) { // 목표값이 해당 자료보다 클 때 ( 우측트리로 이동 ) return binary_tree ( arr , mid + 1 , end , target ); } e..
2017.03.25 -
MergeSort ( 병합정렬 )
void merge_sort_internal ( int arr[] , int temp[] , int start , int middle , int end ){int i = 0 , j = 0 , k = 0 , t = 0 ;i = start ; j = middle + 1;k = start ;while ( i
2017.03.24 -
QuickSort ( 퀵정렬 )
#include int partition_quick_sort( int arr[] , start , end ){int pivot = end ; // 맨끝값을 피벗값으로 지정.int right = end ;int left = start ;int temp = 0 ; while ( left = arr [ end ] && left < right ){ // 오른쪽에서부터 피벗값보다 작은 값을 찾아낸다.right--;}temp = arr [ left ]; // 찾아낸 값들의 위치를 교환한다.arr [ lef..
2017.03.24 -
[8] Python Challenge8 [ bz2 ]
Python Challenge 8번 문제입니다 [ 그림1 ] 페이지 소스를 봐보도록 하겠습니다 [ 그림2 ] 페이지 소스에서 http://www.pythonchallenge.com/pc/return/good.html 를찾았고 들어가려면 id와 password가 필요했었는데 딱 봐도 아래의 코드를 풀어내면 답이였습니다. 우선, 먼저 File Signature라는 것을 알아야합니다. 파일 서명 ( File Signature ) : 해당 파일을 확인하고 해당 내용에 대해 확인시켜주기위해 사용하는 데이터입니다.일반적으로 파일의 앞부분 2~4 Byte 길이를 차지하고있습니다.위 파일의 " BZh91AY&SY " 바로 이문장 bz2파일 임을 알려주는 문장입니다. [ bz2 Module ]bzip2압축도구를 제공해줍..
2017.02.27 -
[7] Python Challenge7 [ PIL ]
Python Challenge 7번입니다. import가 안되는 문제로 문제풀이가 제대로 되지 않았습니다 [ 문제 풀이법 ]1. import image2. img = image.open ( "oxygen.png ") // 이미지파일을 객체형태로 반환3. xSize , ySize = img.size() // img의 크기입니다 반환형태는 ( size of x , size of y ) x축과 y축 크기입니다4. 이미지를 그림판으로 확대해서 검정바의 위치를 찾아보았습니다5. 검정바는 y축 43px~52px 사이에 위치해있었고, x축 방향으로 607px 만큼 차지하고있었다6. 또, 그림의 한 픽셀 당 7px의 크기를 가지고 있었다7. 그러므로 코드를 짜보면for x in range ( 0 , 607 , 7 ):..
2017.02.23