전체 글 96

8주차 CafeMate 개발 프로세스 다시 정립

소프트웨어 생명주기는 요구사항 분석=> 설계=>구현=> 테스트=>유지보수 로 이루어집니다. 앞으로 이 프로세스를 진행하는데 이 주기를 지켜야 할 것 입니다. 현재 문제점... 현 단계에 저희는 요구사항 분석(요구사항 수집후 명세서 작성)이 끝나서 이제 설계를 건너뛰어 구현을 바로 할 생각이었습니다. 하지만 요구사항 명세서가 어느정도 작성되었지만 이해관계자들이 이 명세서를 봤을 때 과연 이해를 할 수 있을까? 또한 내가 이 명세서만을 보고서 구현이 쉽고 빠르게 이루어질까? 하는 생각이 들었습니다. 그래서 이러한 문제점때문에 그동안 작성한 것들을 바탕으로 빠른 시간내에 수정작업을 할 것 입니다. 요구사항 분석 전 모델 채택 : 애자일 프로세스 일단 소프트웨어 공학 관점을 지키기 위해 소프트웨어 생명주기를 가..

우선순위 큐

우선순위 큐란 우선순위가 높은 데이터대로 먼저 나가는 자료구조이다. 우선순위 큐에 중요한 연산은 총 2가지가 있는데 , 첫번째는 insert(삽입연산), 두번째는 delete(삭제연산) 이다 우선순위 큐는 2가지로 구분이 되는데 최소 우선순위 큐는 가장 우선 순위가 낮은 요소를 먼저 삭제한다. 최대 우선 순위 큐는 가장 우선순위가 높은 요소가 먼저 삭제된다. 우선순위 큐의 구현방법 표현 방법 삽입 삭제 순서 없는 배열 O(1) {배열 맨끝에 새로운요소를 추가} O(n) {처음부터 끝까지 모든 요소를 스캔} 정렬된 배열 O(n) {다른 요소의 값을 비교후 삽입} O(1) {숫자가 높은것이 우선순위가 높다고 가정하면 맨 뒤에 위치한 요소 삭제} 순서 없는 연결리스트 O(1) {첫번째 노드로 삽입} O(n) ..

트리(이진 탐색 트리) 삽입연산,삭제연산

이진탐색트리는 탐색을 효율적으로 하기 위해 만든 이진 트리 기반의 탐색을 위한 자료구조입니다. 이진탐색트리를 알기 위해 정의를 살펴봅시다. 이진 탐색 트리의 정의 모든 원소의 키는 유일한 키를 가진다. 왼쪽 서브 트리 키들은 루트 키보다 작다. 오른쪽 서브 트리 키들은 루트의 키보다 크다. 왼쪽과 오른쪽 서브트리도 이진 탐색트리이다. 위에 있는 정의들을 만족시키며 이진 탐색 트리는 완성이 됩니다. 아래에 있는 영상은 어떻게 하면 이진탐색트리를 좀더 쉽게 정의를 지키며 구현할 수 있을까 해서 가져온 영상입니다. https://www.youtube.com/watch?v=9ZZbA2iPjtM 이진탐색트리의 삽입연산 이진 탐색 트리에 원소를 삽입하기 위해서는 먼저 탐색을 수행하는 것이 필요하다. 이유는 이진 탐..

자료구조 <트리>

트리란? 계층적인 구조인 트리는 가족의가계도, 회사의 조직도, 컴퓨터의 디렉토리 구조, 인공지능 문제에서도 사용됩니다. 대표적인 것이 결정트리 트리의 용어들 루트(root) : 계층적인 구조에서 가장 높은 곳에 있는 노드 : (A) 서브트리(subtree) : 루트노드를 제외한 나머지 노드들 : { (B,D,E,H,I,J) , (C,F,G) } 간선(edge) : 트리에서 루트와 서브트리는 선으로 연결됩니다. : 10개 (공식::노드의 개수-1) 부모노드(parent node) : 데이터 구조의 트리에서 모든 노드의 선행 노드인 노드를 부모 노드라고 하거나 자신에서 다른 연속 노드로 분기하는 노드를 부모 노드라고 합니다. : (A),(B),(C),(D),(E),(F),(G) 자식노드(children no..

자료구조 <스택, 응용:괄호검사, 후위표기수식계산>

스택 기본구성 #include #include using namespace std; template class stack { int top; T* array; public: stack() { top = -1;} ~stack() { delete[]array; } void create(int size) { array = new T[size]; } void push(T element) { array[++top]=element; } T pop() { T res; res = array[top]; top--; return res; } T peak() { return array[top]; } int _size() { return top + !; } bool is_empty() { if (top == -1)return..