programming

    [DAY 06] Binary Search Tree

    Program 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166..

    [DAY 05] Tree

    Linked List 복습노드를 어떻게 연결시킬가가 관건이다그 연결은 포인터로 한다 (삽입, 삭제 등의 알고리즘만 알고 있으면 할 수 있다) Treeㅇ Recursion자기 자신도 함수이기 때문에 자신을 호출하는 것을 재귀함수라 한다.내가 나를 부르는 것을 재귀호출이라 한다. Binary Search Tree1. 트리의 특징은 절대 같은 값을 넣으면 안된다.2. 왼쪽 자식의 노드는 자신의 부모 기준으로 작은 값이 들어와야 한다.3. 오른쪽 자식의 노드는 자신의 부모 기준으로 큰 값이 들어와야 한다. 모든 자료구조에서 삭제가 제일 중요하다! 삭제 알고리즘1. 노드의 자식이 0개 있는 경우2. 노드의 자식이 1개 있는 경우3. 노드의 자식이 2개 있는 경우 1234567891011121314151617181..

    [Algorithm] Baby Gin

    Baby Gin은 카드로 게임을 한다.각 카드는 0 에서 9 까지의 수가 쓰여져 있다.게이머는 6 장의 카드를 받는다. 받는 사람이 Baby Gin을 가진다면 이 게이머가 이기고 아니면 진다.Baby Gin을 가지기 위해서는 모든 6장의 카드가런(runs)이거나, 트리플리트(tripletes) 이여야 한다. • 런이라는 말은 3장의 카드가 연속적인 번호를 말한다.ex. 345 혹은 789 .., 단, 901 은 런이아니다.• 트리플리트는 같은 번호를 가지는 세장의 카드를 말한다.ex. 000 혹은 444, ... 몇 가지 예를 보면,• 667767 은 Baby Gin이다. 두 개의 트리플리트(666, 777)• 054060 은 Baby Gin이다. 하나의 런과 하나의 트리플리트• 101123 은 Baby..

    [DAY 04] Doubly Linked List

    (오후) 링크가 잘 걸려있는지 항상 체크하여야 한다. 삽입, 삭제가 빈번할 때는 절대로 배열을 쓰지 않는다. 더블 링크 리스트 장점검색 효율이 좋다유지 보수성이 좋다 linked list는 검색 알고리즘이다. ------답 주석while(pos>count || posnext = NULL; root->prev = NULL; do { puts("========== MENU =========="); puts("1. 추가"); puts("2. 출력"); puts("=========================="); printf("뭐 할래? : "); scanf("%d", &num); switch (num) { case 1: // 입력 Insert(root); break; case 2: // 출력 Display..

    [자료구조] 성적관리프로그램(Singly Linked List)

    Saturday, January 27, 2018 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916..

    [DAY 03] Singly Linked List를 이용한 성적관리프로그램

    12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816..

    [DAY 03] Singly Linked List 2

    Linked List의 종류 1. Single Linked List2. Double Linked List3. Single 환형 Linked List4. Double 환형 Linked List (실무에서 많이 씀) 2. 삭제 삭제는 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512..

    [DAY 02] Singly Linked List 1

    Linked List의 종류 1. Singly Linked List2. Doubly Linked List3. Circular Singly Linked List4. Circular Doubly Linked List (실무에서 많이 씀) linked list를 쓸때 키 포인트가 뭐냐? 동적 메모리는 이름이 없다! 그래서 항상 포인터가 잡고 있어야 한다그래서 내가 가리키고 있는 포인터에서 얘를 움직여도 되는가? 라는 부분을 항상 염두해 두어야 한다움직일 순 있지만, 항상 첫번째 부분을 가리키고 있어야 한다. 그래야 뒤에 있는 곳도 가리킬 수 있다. (그림은 필기 참고) 자기 참조 구조체 구조체 안에 구조체를 넣을 수 있나? (o)그게 자바에서 has-a 관계이다(그림 참고) 지금부터 용도를 확실히 해라! 포인..

    [DAY 01] Review of Pointers

    알고리즘 : 문제 해결력 주소값 : 메모리에 저장된 위치1. &변수명 : 그 변수의 시작주소를 의미한다.2. 배열명3. 함수명 : 코드 영역에 저장된다4. 문자열 문자열의 집합으로 밖에 쓸 수 없다.5. 포인터 (간접 변수; 자기 자신을 위해서 쓰는 게 아니라 접근하는 대상에 쓴다) 주소 표현식그 정체가 배열이면 sizeof(그 배열의 전체 크기)포인터면 sizeof(int) right - left정체를 알면 그 정체부분은 읽지 않는다 Program 01.01 차원을 구분해서 동적 메모리 할당으로 만든 성적관리프로그램

    [Core C] Functions (함수)

    Real World의 동작 표현하기 우리가 프로그래밍하는 이유는 일상생활 속에서의 문제 상황들을 해결하기 위함이라고 소개한 바 있습니다. 마찬가지로 함수를 배울 때 현실 세계의 인간과 연관 지으면 좀 더 쉽게 이해할 수 있습니다. 프로그래밍과 사람은 많이 닮은 점이 있는데, 프로그래밍 역시 사람이 만든 결과물이기 때문입니다. 사람이 먼저 아니겠습니까. 앞서 다룬 변수와 함수를 잘 이해한다면 나중에 배우게 될 구조체와 객체지향 패러다임에서 중요하게 다루는 클래스의 이해에 큰 도움이 될 것입니다. 사람을 어떤 물체 중 하나라고 생각해봅시다. 사람이라는 물체는 키, 몸무게, 시력 등 어떤 속성을 가질 수도 있으며 게임을 한다, 운동한다, 먹는다 등등 어떤 동작을 수행할 수 있습니다. 마찬가지로 코딩에서도 어떤..

    [DAY 03] Program Looping

    Contentsㆍ The for Loop- Relational Operators- Aligning Output- Program Input- Nested for Loops- for Loop Variantsㆍ The while Loopㆍ The do-while Loopㆍ Loop Control Statements- The break Statement- The continue Statement Types of Loops in C 반복문(loop)는 크게 3가지로 나뉜다. 1. for 2. while 3. do-while goto문도 있긴 한데 사연이 있는 녀석이다. 시간 되면 수정하겠다. 결론은 goto문은 쓰면 안된다! 이 세가지에서 공통적으로 지켜줘야 할 중요한 점은 무한루프(Infinite Loop)가 ..

    [DAY 07] 포인터 2

    1. 어디 값인지는 차후의 문제이다. 정체는 나중 문제다. 2. 문제는 address다 => 주소도 차원이 있다![ ], * 포인터의 주소를 알면 그 값을 마음대로 조정할수있다 포인터 장점 : 주소를 암으로써 그 값을 읽고, 쓰고 할 수 있다.포인터란? 주소를 저장하는 변수 주의 : 포인터를 잘못 가리키면 데이터 손실 등의 심각한 문제를 초래한다. 그래서 주소값을 정확하게 넘겨주어야 한다. 포인터의 기능1. 오직 주소(address)만 받을 수 있다. (꼭 주소값을 넣어라는 얘기)2. 받은 주소의 값(value)을 읽을 수 있다.3. 받은 주소의 값을 변경시킬 수 있다.4. 주소 이동이 가능하다. 따라서 정확한 주소값을 주는 것이 중요하다 포인터 선언방법1. 오직 주소(address)만 받을 수 있다. ..