코딩

    [Algorithm] 코드 블럭 단위 복잡도 분석

    개요 코드 블럭은 C++일수도 있고, 수도코드, 의사코드 일수도 있다. 점근적으로 n이 커질 때, 점근적 런타임과 점근적 메모리 문제의 크기를 설명하는 변수, n이던 아니던 vertex의 개수던 edge의 개수던 이런 parameter를 표현하는 것이 첫번째 단계이다. 알고리즘의 asymptotic behavior은 이 알고리즘이 n이 커졌을 때, 문제의 크기가 커졌을 때 어떻게 행동하는지, 과연 이 알고리즘이 n이 아주 큰 상황에서도 잘 동작하는지에 대한 정보를 제공한다. 예를 들어 A는 세타오브 n square이고 B는 n log n일 때 n의 값이 2k일 때는 A의 경우 4k square B의 경우 2k log k + 2k 이다. 하지만 2k에서 10k로 5배 증가시킨다면 A의 요구시간은 5 * 5..

    [자료구조] C언어 Pointer에 대하여

    개요 알고리즘은 선행 지식으로 자료구조에 대한 이해를 필요로 한다. 자료구조의 경우엔 포인터에 대한 사전 지식이 있다면 이해하기 좋다. 본 글에서는 C언어의 포인터 변수에 대한 아주 기초적인 내용을 다룬다. Pointer란? C언어에서 포인터는 '메모리의 주소를 저장하는 변수' 이다. '&' operator는 어떤 변수의 주소를 받아올 수 있다. '*' operator는 참조한 값을 다시 역으로 따라간다. 포인터는 기본적으로 4byte를 할당받는다. 이렇게 설명하면 어려울 수 있으니 예제코드와 함께 설명하겠다. #include int main() { char a = 'A'; char* pointer = &a; printf("%c %p\n", a, pointer); printf("%p %p\n", &a, ..