재귀예제의 단골손님 하노이의 탑에 대해 알아봤다. 하노이의 탑예제는 처음 배웠을땐 정말 이해가 안됐는데 지금보니 약간 이해가 됐다. 특히 저번의 피보나치 수열의 예제와 함께보면 이해가 잘된다. 이해가 안됐던 점은 팩토리얼 예제같은 경우는 함수 재귀호출을 한 함수에 하나만 하는데 피보나치나 하노이 예제의경우는 두개의 함수를 호출해서 순서가 어떻게 되는지 너무 헷갈렸다. 특히 하노이 예제같은 경우는 처음 배우면 진짜 이렇게 대충 생각해서 코딩해도 되나 싶을 정도로 알려주는 경우가 많다. 나같은 경우는 코드가 진행되는 한줄 한줄, 한단계, 한단계를 이해하고 싶기 때문에 하노이 타워 코드를 내맘대로 살짝 추가해서 함수 호출이 어떻게 이뤄지고 파라미터 변화가 어떻게 이뤄지는지 알아보았다. #include void..
재귀함수를 활용한 시간이었다. 재귀의 개념을 전에 나왔던 이진 탐색알고리즘에 활용해서 직접 코딩 해 볼 수있었다. 재귀함수는 말그대로 재귀적 상황에서 쓰면 좋을 것 같다. 즉 귀납적으로 해결할 수있는 문제가 발생햇을때 사용할만한 방식이라고 생각된다. 이진 탐색 알고리즘을 재귀적으로 구현해 보았다. 책에는 이미 예제가 있었지만 내 방식대로 코딩을 했다 역시 프로그램엔 뭔가 입력하는게 있어야 만드는 맛이 있다. #include int binarysearchalgol(int arr[], int first, int last, int target) { int mid; if (first > last) return -1; mid = (first + last) / 2; if (arr[mid] == target) ret..
재귀란 무엇인가에대해 배웠다. 예전부터 C코딩을하며 배우긴 했지만 책에있길래 복습차 한번 더 봤다. 앞으로 이틀은 더 보게될것같다. 역시 재귀의 전형적이고 기본적인 예로 팩토리얼 계산법을 보게되었다. 이젠 많이 이해하고 있는 상태라 처음 봤을때 처럼 당황스럽진 않고 자연스럽게 읽혔다. 왜 자료구조책에서 재귀가 나온고 하니 생각해보니 2학년 자료구조 시간에 트리 자료구조의 탐색알고리즘을 구현할때 재귀호출을 굉장히 많이 썼던 기억이 난다. 아마 그 선행과정으로 공부하게 되는 것같다.
윤성우의 열혈 자료구조에선 알고리즘 성능 분석에대해 간략하게 설명했다. 그를 토대로 공부했다. 사실 2학년때 배운 내용이라 그것도 이지영교수님께 좀 깊게 공부한 이력이있어 그렇게 무리는 없었지만 저자가 이 개념을 처음 접하는 사람들을 위해 엄청나게 쉽고 자세하게 설명해줬구나 하는 걸 느꼈다. 의식의 흐름대로 쓰면서 짜임새와 정확성을 잃지 않은것이 글을 정말 잘 쓴다고 느꼈다. 알고리즘 성능은 두가지로 평가한다고 한다. 시간복잡도와 공간복잡도, (time complexity, space complexity) 시간복잡도의 경우 빅오(O)를 사용하여 많이 판별하는데 최악의 경우를 기준으로 잡아 그 식의 빅오를 이용한다. 빅오란 뭘까. 정의를 보면 함수 f(n)과 g(n)이 주어졌을때 K이상의 n에 한해 f(n)
1. 구조체 대상의 typedef선언Example) typedef struct check{ int age; int something;}CHECK; 2.malloc/free 와 메모리의 동적할당malloc -> 메모리를 할당해줄때 사용free-> 할당된 메모리를 해제 3.헤더파일이 필요한 이유=편한 관리 4.헤더파일정의5.조건부 컴파일=======================================================이정도고 뭐 나머지는 하다보면 기억 날것같다. 구글신과 윤성우님의 힘을 빌어 복학전까지 자료구조의 기초와 개념을 확실히 잡는게 목표 내일은 알고리즘의 성능분석 방법을 살펴보겠다. 2학년때 배운 내용이지만 2년전일이다. 그때 샀던 전공서도 레퍼런스로 참고해서 봐야겠다.