절대 시험공부가 하기 싫어서가 아니라 실습실에서 후배들이 중간고사 대비로 연결 리스트에 대해 심각하게 스터디하는 장면을 목격했다. 옛날에 내가 스터디 하면서 후배들 가르칠 때 생각도 나고 해서 잠깐 앉아서 구경이나 하면서 앉아만 있긴 지루하니 간단하게 단방향 연결 리스트를 C언어로 짜봤다. 한 2년 전에 처음 리스트에 대해 배우고 코딩할 때 하루종일 걸려서 끙끙댔었는데, 지금은 한 5분? 10분? 정도면 간단하게 짜여지는게 참 기분이 묘했다. 결국 연결 리스트의 핵심은 코드에 정의되지 않은 로직 즉, 사용자로 부터 Node를 생성하라는 요청을 받았을 때 메모리 Heap 영역에 공간을 할당하고 그 할당된 친구를 기존 리스트에 붙이거나, 기존의 노드를 삭제하거나, 간단하게 출력만 하거나 등등 일 것이다. 자..
#include "stdio.h" #define MAX 10 int arr[MAX] = {1,2,3,4,5,6,7,8,9}; int sum(int st, int ed) { if(st == ed) { return arr[st]; } else return sum(st, ed-1) + arr[ed]; } void main() { printf("sum : %d ", sum(0, MAX-1)); } 위 소스코드는 흔하디 흔한 1~10 까지 더해주는 프로그램이다. 대부분 이 프로그램을 코딩할 때 for문을 사용하지만 이 코드에서는 재귀함수(Recursion)가 사용되었다. 문제해결기법 강의 교수님이 말하길 재귀함수는 프로그래밍에 있어 가장 중요한 부분 중 하나이며, 이에 익숙해지기 위해서는 모든 문제에 대해 그 해..
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다. 선택 정렬(Selection Sort)은 정렬되지 않은 전체 자료 중에서 해당 위치에 맞는 자료를 선택하여 위치를 교환하는 정렬 방식이다. 선택 정렬을 사용하여 특정 배열의 값을 오름차순으로 정렬하기 위한 다음과 같은 코드를 생각할 수 있다. void SelectionSort(int arr[], int MAX) { int i, j; int min, temp; for(i=0; i