본문 바로가기

자료구조 시작 전 알기 (4) Arrays, Algorithms, Complexity, and Recursion 일단 들어가기 앞서서 앞으로 증명에 자주 사용할 수학적 귀납법에 대해 알아보자. 수학적 귀납법 ( 명제 : P(n)이 있을때 ) 기본형 : p(1)이 참이고, p(n-1) -> p(n) 이 참이면 p(n)은 모든 자연수 n에 대하여 참이다. 강한 형태 : p(1)이 참이고, p(1)^p(2) ^ ....^p(n-1) -> p(n) 이 참이면 p(n)은 모든 자연수 n에 대하여 참이다. 수학적 귀납법은 크게 Base 와 Step 부분으로 나뉜다. 먼저, 기본형에 대해 보자면 base: p(1) 인 것이 참이라는 것을 보이고 step : p(n-1) -> p(n) 가 참이라고 보이면, p (n) 은 모든 자연수 n에 대해 참이라고 증명이 가능하다. base 와 step은 서로 독립적이고, 보통 base는 참.. 더보기
자료구조 시작전 알기 (3) CPU-Memory Architeture, Variables ,Addresses, Pointers 지난 포스터에서는 변수와 포인터에 대해 알아보았다. 이번 포스터에서 포인터 관련해서 좀 더 다루어보자. 아래 코드를 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main() { int a, x; char b; int *p, *r; int **q; p = &a; *p = 30; q= &p; **q = 30; x = a + *p; return 0; } 14 번째에서 x = a + *p가 허용이 될까? 한번 생각해보자 a 는 int 값을 가진 변수이다. 그리고 *P는 무슨 뜻이였는가? p주소로 가라는 뜻이다. 거기에 가면 뭐가 있는가? 9번째에 우리는 int *p라고 선언했다. p번지로 가면 int 값이 있다는 것이다. 그러면 a+*p 는 두개의 in.. 더보기
자료구조 시작전 알기 (2) CPU-Memory Architeture, Variables ,Addresses, Pointers 지난번에는 CPU Memory에 대해 알아 보았다. 이번 포스팅에서는 변수에 대해 이야기 해보자. 먼저 예시로 다음과 같은 간단한 C 코드를 돌려본다고 생각해보자. 1 2 3 4 5 6 7 8 9 10 11 12 #include int main() { int a; char b; a = 10; // 이진수로 나타내면 0000 0000 0000 0000 0000 0000 0000 1010 b = 'k'; // 이진수로 나타내면 0110 1011 printf("%d %c\n" , a, b); return 0; } 실행 결과 : 10 k 코드의 흐름을 간단하게 보면 a라는 변수를 만들고 int(정수형)를 담은 것 b라는 변수를 만들고 char(문자형)를 담은 것 a 는 숫자 10을 넣고, b 는 글자 k 를 넣.. 더보기