목록자료구조와 알고리즘 (6)
Jeunwork space
정적 메모리 할당 - 메모리의 크기를 프로그램 시작하기 전에 결정 - 실행 도중에 크기를 변경할 수 없다. - 더 큰 입력이 들어온다면 처리하지 못함 - 더 작은 입력이 들어온다면 메모리 공간 낭비 동적 메모리 라이브러리 함수 - 실행 도중 메모리를 할당 받는 것 - 필요한 만큼만 할당 받고 반납한다. - 메모리를 효율적으로 사용가능 - 동적으로 할당된 메모리는 반드시 포인터에 저장 → 삽입, 반납 용이 Linked Representation - 노드를 통해 다음 주소포인터를 넣어주는 방법 - 노드는 쌍으로 구성 - 구성: 데이터 필드 - 데이터의 값 저장하는 곳, 링크 필드 - 포인터 - 장점: 노드 삽입, 삭제가 용이하다.(포인터만 끊으면 되니까) 연속된 메모리 공간이 필요없다. 크기 제한이 없다. ..
큐(queue) - 먼저 들어온 데이터가 먼저 나가는 선입선출 구조. - FIFO( First In, First Out) - ex) 매표소 대기줄 - 전단(front) 은 가장 먼저 들어오는 데이터를, 후단(rear)는 가장 마지막에 들어오는 데이터를 가리킨다. - 삽입 : enqueue()는 큐의 후단(rear)에서, - 삭제 : dequeue()큐의 전단(front)에서 이루어 진다. - init() : 초기화 - is_empty() : 큐가 비어있으면 true, 아니면 false 반환한다. - peek() : 큐가 비어있지 않으면 맨 앞 요소를 삭제하지 않고 반환한다. - is_full() : 큐가 가득 차 있으면 true, 아니면 false 반환한다. - size() : 큐의 모든 요소들의 개수를..
stack이란, 쌓아놓은 더미를 의미하며, 아래서 위로 하나씩 쌓아가는 형태를 의미한다. 프링글스나 회전초밥 무한리필집에서 접시를 쌓아놓는 것을 생각하면 이해하기 쉽다. 가장 마지막에 들어온 데이터를 탑(top), 가장 먼저 들어온 데이터를 바텀(bottom)이라고 하며, 구조 특성상 가장 나중에 들어온 데이터가 가장 먼저 나가는 LIFO(Last In First Out) 특징을 갖는다. 각 데이터를 요소 또는 항목이라고 하며, 데이터가 하나도 없는 상태를 공백상태, 데이터가 가득찬 상태를 포화상태라고 한다. - 스택 연산: · init() : 스택 초기화 · is_empty() : 스택이 공백상태면 True, 아니면 False 반환 · is_full() : 스택이 포화상태면 True, 아니면 False..
- 변수 -> 값을 전달 (call by value) - 배열 -> 첫 번째 항목의 주소, 배열의 길이 전달 (주소 복사) (call by reference) - 배열에서 주의사항 · 매개 변수로 배열의 길이도 전달해야 한다. · 2차원 이상의 다차원 배열의 매개 변수 전달에 조심. - 구조체 · 기존의 자료형들을 조합해 새로운 자료형을 만드는 방법 · 구조체는 타입이 다른 데이터들을 하나로 묶고, 배열은 타입이 같은 데이터들을 하나로 묶는다! · 대입 연산자만 가능, 비교연산자 등 다른 연산자는 사용 불가능 · 함수의 매개 변수나 반환형으로 사용할 수 있음 - call by value, return값 · 구조체 멤버 접근 - 항목 연산자(membership operator) ex) a.id = 300;..
· 변수 : 각각 기억장소에 하나의 데이터 넣는 것. 구별 위해 이름을 각각 다르게 지어야 한다. ex) int A0, A1, A2... · 배열 : - 각각 index값을 줘서 구별. - 같은 형의 변수를 여러개 만드는 경우 사용. - 직접 접근 방식으로 항목 접근 시간 복잡도가 O(1). - 연결 리스트 - 반복문 사용가능. → 코드 길이 줄일 수 있다. ex) int A[10]; · 벡터 : - 동적으로 길이가 변하는 배열. - C++ 의 STL에서 가능. · 문자열 (String) : - 1개 이상의 문자들의 모임. - 문자열의 복사나 비교를 위해 =나 >,< 등의 연산자 사용할 수 X. 대신 함수 이용 ex)strcpy(), strcmp(). - 문자 하나에 1byte. - 공백도 문자에 포함...
- 컴퓨터로 문제를 풀기 위한 단계적 절차 ex) 학생들의 평균점수를 구하는 일련의 과정 - 조건 1. 입력: 0개 이상의 입력이 존재해야 한다. 입력이 없을 수도 있다. 2. 출력: 1개 이상의 출력이 존재해야 한다. 3. 명백성: 각 명령어의 의미는 명확해야한다. 모호하지 X. but, 인공지능은 모호한 정보도 모두 흡수하게 해서 다 이해한다 4. 유한성: 한정된 수의 단계 후에는 반드시 종료되어야 함. 5. 유효성: 각 명령어들은 실행 가능한 연산이어야 한다. - 기술방법 자연어, 흐름도(flow chart), 유사 코드(pseudo-code), 특정 프로그래밍 언어( C++, java, python 등) 1) 자연어 ˙ 인간이 쓰는 언어. ˙ 단어들을 정확하게 정리하지 않으면 의미 전달이 모호해질..