Data structure: Assignment 3 Seung-Hoon Na December 14, 2018 레드 블랙 트리 (Red-Black Tree) 1 본 절에서는 레드 블랙 트리를 2-3트리 또는 2-3-4트리 대한 동등한 자료구조로 보고, 두 가지 유형의 레

Similar documents
Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

(실제 구현은 더욱 단순하다). 다음은 배열의 길이 n과 간격비 K의 서로 다른 셋팅에 대한 셸 정렬의 진행 순서에 대한 예이다. 1. n = 150, K = 3인 경우, Eq. (2)에 따라 m = 5이다. 즉, 셀 정렬은 총 5 단계를 거치며 (m = 5), 121

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제

chap 5: Trees

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Chap 6: Graphs

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Lab 3. 실습문제 (Single linked list)_해답.hwp

adfasdfasfdasfasfadf

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Chapter 4. LISTS

C프로-3장c03逞풚

chap 5: Trees

06장.리스트

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Chap 6: Graphs

Artificial Intelligence: Assignment 1 Seung-Hoon Na October 16, A* Algorithm 본 과제에서는 M N Grid world에서 장애물이 랜덤(random)하게 배치되고, 시작 지점에서 장애물을 피해 목

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2

03_queue

7장

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

쉽게 풀어쓴 C 프로그래밍

11장 포인터

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

2002년 2학기 자료구조

쉽게 풀어쓴 C 프로그래밍

Chap 6: Graphs

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

03장.스택.key

Microsoft PowerPoint - Java7.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

Microsoft PowerPoint - 07-Data Manipulation.pptx

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

C++ Programming

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

PowerPoint 프레젠테이션

제 1 장 기본 개념

제8장 자바 GUI 프로그래밍 II

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

C++ Programming

PowerPoint Presentation

PowerPoint 프레젠테이션

untitled

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

chap01_time_complexity.key

BMP 파일 처리

Frama-C/JESSIS 사용법 소개

Run 봄 연습 Mar 18 Mar 24, 2018, Week 3 문제 1. 초코바 입력 파일: 출력 파일: 시간 제한: 메모리 제한: standard input standard output 1 seconds 128 megabytes H W 격자 모양의 초콜릿이 있다.

untitled

슬라이드 1

Microsoft PowerPoint - chap10-함수의활용.pptx

11강-힙정렬.ppt

5.스택(강의자료).key

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - C++ 5 .pptx

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

14장.탐색

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

PowerPoint Presentation

슬라이드 1

Microsoft PowerPoint - Chap5 [호환 모드]

08장.트리

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

API 매뉴얼

Chapter 4. LISTS

슬라이드 1

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

02장.배열과 클래스

PowerPoint 프레젠테이션

윈도우시스템프로그래밍

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

Microsoft PowerPoint - chap11-포인터의활용.pptx

슬라이드 1

JUNIT 실습및발표

슬라이드 1

PowerPoint Template

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Artificial Intelligence: Assignment 2 Seung-Hoon Na October 20, Map coloring 본 과제에서는 M N Grid world 지도상에서 각 region이 rectangle또는 polyomino유형으로 주

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

05_tree

C 언어 강의노트

Chapter 4. LISTS

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

슬라이드 1

(define (domain blocksworld (:requirements :strips :typing (:types block (:predicates (on?x - block?y - block (ontable?x - block (clear?x - block (hol

PowerPoint Presentation

슬라이드 제목 없음

UI TASK & KEY EVENT

Microsoft PowerPoint - Chapter 6.ppt

Transcription:

Data structure: Assignment 3 Seung-Hoon Na December 14, 2018 레드 블랙 트리 (Red-Black Tree) 1 본 절에서는 레드 블랙 트리를 2-3트리 또는 2-3-4트리 대한 동등한 자료구조로 보고, 두 가지 유형의 레드 블랙 트리를 구현하고자 한다. 1.1 2-3트리와 동등한 레드 블랙 트리 2-3트리와 동등한 레드 블랙 트리에서는, 교과서의 그림 13-24처럼, 2-노드와 3-노 드에 대응되는 레드브랙트리만 허용하고 4-노드는 허용하지 않는다. 따라서 다음그 림과 같이 4-노드에 해당되는 연결된 빨강링크를 갖는, 3가지 경우가 모두 허용되지 않는다. 그리고, 3-노드의 경우에는 빨강 링크가 어느방향으로 기울어지느냐에 따라 두 가지 경우가 존재하나, 본 문제에서는 빨강 링크가 왼쪽으로 기울어진 (lean left) 경우로만 한정한다 정리하면, 2-3트리와 등가인 레드 블랙 트리의 특징은 다음과 같다. 1

빨강 링크는 왼쪽으로 기울어진 좌측 경사의 경우만 허용한다 (lean left) 두 개이상의 연결된 빨강 링크는 허용하지 않는다. 검정 링크들은 완전 균형을 이룬다. 즉, 트리의 루트에서 모든 리프 노드에 이 르는 경로들의 검정 링크의 수는 모두 같다. 리프 노드에 이르는 검정 링크의 수를 black height라 한다. 1.1.1 2-3트리와 동등한 레드 블랙 트리: 삽입 및 삭제 알고리즘 2-3트리와 동등한 레드 블랙 트리상에서 삽입 및 삭제 알고리즘을 제시하고 각 경우에 대한 예제를 기술하시오. 1.1.2 2-3트리와 동등한 레드 블랙 트리: 삽입 및 삭제 알고리즘 구현 트리 노드를 위해 다음 자료구조를 가정하고, 위에서 설계한 삽입 및 삭제 알고리 즘을 구현하시오 (RBtree.cpp코드 작성). #define RED true #define BLACK false typedef struct treerecord int key; struct treerecord * LChild; struct treerecord * RChild; bool color; }node; typedef node* Nptr; 1.1.3 2-3트리와 동등한 레드 블랙 트리: 삽입 및 삭제 알고리즘 테스트 위의 구현된 내용을 테스트하기 위해 2-3트리와 동일한 레드블랙트리인지를 검사 하는 테스트 함수 RBVerify를 작성하시오 (필요하면 위의 자료구조를 확장해도 좋다 (black height등)). bool RBVerify(Nptr node); (위의 세 가지 특징을 검증해야 함) 또한, 다음을 테스트하는 코드를 작성하고, 출력결과를 요약적으로 리포트하시 오 (RBtree test.cpp코드 작성). (화면상 출력결과를 모두 copy할 필요는 없이, 핵심만 리포트) 10,20,30,40,50,60,70,80,90,100을 삽입, 트리 출력, RBVerify로 검증, 및 black height출력 10, 20,..., 1000의 1000개의 데이터를 순서대로 삽입, RBVerify로 검 증, 및 black height출력. 랜덤하게 10,000개의 데이터 삽입 RBVerify로 검증 및 black height출력. 랜덤하게 100,000개의 데이터 삽입 RBVerify로 검증 및 black height출력. 2

랜덤하게 100,000개의 데이터 삽입 후 100,000 삭제, 삭제시마다 RBVerify 로 검증 및 black height출력. 그외 다른 테스트 수행 테스트시 트리를 출력하는 경우에는 다음의 코드를 사용하라. void RBPrettyPrint(const std::string& prefix, Nptr node, bool isleft) if( node!= NULL ) cout << prefix; if(node->color == RED) cout << (isleft? " " : " " ); else cout << (isleft? " " : " " ); cout << node->key ; if(node->color == RED) cout << "*"; cout << endl; RBPrettyPrint( prefix + (isleft? " " : " "), node->lchild, true); RBPrettyPrint( prefix + (isleft? " " : " "), node->rchild, false); } } //RBPrettyPrint("", root, false); when calling it with the root node. 예를 들어, 다음은 10,20,30,40,50,60,70,80,90,100을 삽입후 위 코드를 이용한 출력 결과이다. 40 20 10 30 80 60 * 50 70 100 90 * 1.2 2-3-4트리와 동등한 레드 블랙 트리 2-3-4트리와 동등한 레드 블랙 트리에 대한 내용은 교과서 13장 5절을 참조하라. 1.2.1 2-3-4트리와 동등한 레드 블랙 트리: 삽입 및 삭제 알고리즘 (2-3트리의 문항에서처럼) 2-3-4트리와 동등한 레드 블랙 트리상에서 삽입 및 삭제 알고리즘을 제시하고 각 경우에 대한 예제를 기술하시오. 3

1.2.2 2-3-4트리와 동등한 레드 블랙 트리: 삽입 및 삭제 알고리즘 구현 (2-3트리의 문항에서처럼) 앞 문항의 treerecord를 사용하여 위에서 설계한 삽입 및 삭제 알고리즘을 구현하시오 (RBtree 234.cpp코드 작성). 1.2.3 2-3-4트리와 동등한 레드 블랙 트리: 삽입 및 삭제 알고리즘 테스트 2-3트리의 문항에서처럼, 2-3-4트리와 동일한 레드블랙트리인지를 검사하는 테스 트 함수 RBVerify를 작성하시오). 또한, 2-3트리의 문항에서 주어진 각 경우에 대해 테스트하는 코드를 작성하고, 출력결과를 요약적으로 리포트하시오 (RBtree 234 test.cpp코드 작성). (마찬가 지로 화면상 출력결과를 모두 copy할 필요는 없이, 핵심만 리포트) 2 트라이 (Trie) 본 절에서는 영문 소문자 알파벳을 radix단위로 하는 트라이(trie)를 구현하는 것이 목표이다. 다음은 by, bye, byte, data, day, done, do, did를 순서대로 삽입한 트라이의 구조이다. (값은 순서대로 0, 1,, 7까지 부여되었다고 가정) 본 절에서는 트라이 각 노드 표현을 위해 다음 자료구조를 사용한다. #define NUM_ALPHABET 26 typedef struct trierecord int val; struct trierecord **nodes; } node; typedef node* Nptr; Nptr CreateTrieNode() Nptr p = new node; 4

p->nodes = new node*[num_alphabet]; for(int i=0;i<num_alphabet;i++) p->nodes[i] = NULL; return p; } 2.1 트라이 클래스 구현 주어진 트라이 노드에 대한 자료구조에 기반하여, 영문 소문자 알파벳으로 구성된 문자열에 대해 트라이 클래스 class의 Insert, Update, Delete, Save, Open을 완성하시오. (Trie.h, Trie.cpp). class Trie public: int size; Nptr *root; public: void Create(); int Insert(const char *key, int val); Nptr Search(const char *key); void Delete(const char *key); void Save(const char *filename); void Open(const char *filename); ; } 각 함수에 대한 정의는 다음과 같다. Create: 트라이를 새롭게 생성한다. Insert: 주어진 key에 대해 값이 val인 노드를 트라이에 삽입한다. 만약 이미 동일한 key가 존재하면, val로 값을 변경한다. Search: 주어진 key에 대한 트라이 노드를 리턴한다. 만약 key가 존재하지 않으면 NULL을 리턴한다. Delete: 주어진 key에 대한 트라이 노드를 삭제한다. Save: 트라이를 binary또는 text파일로 저장한다. 차후 빠르게 loading할수 있도록 파일 포맷을 잘 설계해야 한다. Open: 저장한 트라이 파일을 읽어들여 메모리상으로 loading한다. 2.1.1 트라이를 이용한 Word count계산 및 사용자 테스트 트라이를 이용하여 주어진 텍스트 파일에 있는 각 단어의 word count를 계산하고, 계산된 결과를 해쉬 파일로 저장하는 Trie word count.cpp를 작성하시오. (word count를 1씩 증가시키기 위해 트라이 클래스상의 새로운 함수 Update를 추가해도 된다. 그렇지 않으면 Search후에 Insert하는 방식으로 word count를 계산하라.) 구동 테스트를 위해 다음 두 가지 입력 파일에 대해 테스트를 수행하고, 트 라이의 내용을 각각 The-Road-Not-Taken.trie, Dickens Oliver 1839.trie에 저장하시오.. 5

http://nlp.jbnu.ac.kr/ds2018/data/the-road-not-taken.tokens.txt http://nlp.jbnu.ac.kr/ds2018/data/dickens Oliver 1839.tokens.txt 추가로, 저장된 트라이 파일 The-Road-Not-Taken.trie, Dickens Oliver 1839. trie를 로딩하여 트라이를 메모리에 올린후, 사용자로부터 단어를 입력단어 Search 를 수행하여 해당 단어가 있으면 count를 그러지 않으면 Not found를 출력하는 코드 Trie word count test.cpp를 작성하시오. 2.1.2 트라이와 해시 및 이진탐색트리 효율 비교 과제2에서 구현된 해시와 이진탐색 효율 비교를 위해, Dickens Oliver 1839. tokens.txt상에서 N 개의 랜덤 key에 대해 Search를 호출할 때 트라이와 해시 그리고 이진탐색트리간의 소요시간을 비교하시오 (N = 100000이상). (본 절에서 는 트라이의 소요시간파악이 핵심 주제이다) 3 네비게이터 본 절에서는 임의의 랜덤 도로 맵에서 시작위치에서 끝 위치까지 최단 경로를 탐 색하는 네비게이터 (navigator)를 구현하는 것을 목표로 한다. 네비게이터는 1000 1000의 맵 프레임과 1) 랜덤 로드 생성, 2) 최단 경로 탐색, 3) MST 탐색 의 세 개의 버튼으로 구성된다. 다음은 구현하고자 하는 네이게이터 GUI의 개략도이다. 네이게이터 구동을 요약하면 다음과 같다. 먼저 맵 프레임상에서 N 개의 도로(road)를 랜덤하게 생성한 후에 도로들의 교차점을 계산한 후, 해당 교차점을 정점으로 하고, 인접된 두 교차점마다 간선을 형성하고, 두 교차점간의 도로상 직선 거리를 간선의 가중치로 하는 교차점 그래프 (가중치 그래프)를 만든다. 다음, 네비게이션 모드에서는, 사용자의 시작지점과 도착지점을 마우스로 입력 받은 후, 시작지점에서 가장 가까운 교차점을 시작교차점으로 도착지점에서 가장 가까운 교차점을 끝교차점 으로 하여 시작교차점에서 끝교차점까지의 최단경로를 6

다익스트라(Dijkstra)알고리즘을 통해 계산하고, 탐색된 최단 경로를 맵 프레임상 에서 출력한다. 사용자가 지정한 시작/도착지점별로 가까운 교차점까지 이동하는 경로도 출력에 포함되어야 한다. 다음은 최단 경로 출력 예를 보여준다. 이외에 교차점 그래프상에서 모든 교차점을 연결하는 최소신장트리를 구하여 화면에 출력한다. 네비게이터 GUI관련 요구사항을 정리하면 다음과 같다. 맵 프레임: 1000 1000크기의 프레임으로 초기에 랜덤으로 생성된 도로 (Road)를 보여준다. 각 도로는 프레임의 경계에서 시작하고 끝나야 하며, 모든 도로의 교차점은 보다 큰 원으로 표시하여 구분되어야 한다. Generate Random Roads 버튼: 맵을 다시 새롭게 생성하는 버튼이다. 이전 맵은 지우고, 랜덤하게 N 개의 로드를 생성하여 화면에 출력한다. Find Shortest Path 버튼: 사용자 마우스로부터 시작지점와 도착지점를 입력받은 후에 해당 버튼을 클릭하면 다익스트라알고리즘을 통해 최단 경 로를 탐색한다. 탐색결과의 최단 경로상의 도로들은 별도의 색상으로 다른 도로들과는 구분해서 보여주어야 한다. 만약 사용자로부터 아직 시작위치와 끝 위치를 입력받지 못한 경우에는 시작지점와 끝지점의 위치를 마우스로 클릭하시오 라는 대화상자를 제시한다. 최단경로의 최종 거리도 화면상 출 력하라 (시작지점 시작교차점 끝교차점 끝지점에 이르는 거리) Get MST 버튼: 프림알고리즘 (Prim s algorithm) 또는 크루스칼 알고리 즘 (Kruskal s algoirthm)을 적용하여 모든 교차점을 연결하는 Minimum Spanning Tree(MST)를 찾아, 화면에 출력한다. 마찬가지로, MST상의 로드 들은 별도의 색상으로 다른 도로들과 구분해서 보여주어야 한다. 최소신장 트리의 Cost도 화면상 출력하라. 마우스 입력: 시작/끝 지점 설정: 사용자의 마우스 왼쪽 버튼 클릭시에 위치 를 시작지점으로, 오른쪽 버튼 클릭시 위치를 도착지점으로 한다. 7

3.1 네비게이터 구현 (java로 작성) 네이게이터 GUI 요구사항이 모두 충족되도록 해당 코드를 java로 구현한다 (Navigator. java포함 각종 클래스 구현 파일). 구현할 내용의 핵심들은 다음과 같다. 랜덤 도로 생성 도로간 교차점 계산 교차점 그래프 생성 최단 경로 탐색 알고리즘 최소 신장 트리 계산 알고리즘 화면에 출력하는 GUI 코드 본 과제는 알고리즘 구현외에도, GUI환경에서 테스트가 될 수 있도록 GUI 입출력부분도 함께 정교하게 구현되어야함을 유의해야 한다. 3.2 네비게이터 테스트 콘솔모드 테스트와 GUI모드 테스트 모두 지원되도록 하고, 랜덤 도로의 갯수 N 을 7, 20, 50, 100을 포함하여 4개이상 시작지점와 끝지점을 달리하면서 다양하게 테스트하라. 보고서에는 N = 50인 경우의 콘솔모드 및 GUI출력 결과를 1) 랜덤도로생성, 2) 최단경로탐색결과, 3) MST계산결과 로 정리해서 제시하라. 콘솔모드의 경우 테스트 요구사항은 다음과 같다. 교차점 그래프 정보 출력: 콘솔모드의 경우에는 랜덤 로드 생성후, 다음과 같이 교차점 그래프 정보가 출력되도록 하라. 교차점 갯수, 간선 수 각 교차점 정보: 교차점의 위치 (x, y좌표)와 인덱스, 해당 교차점과 연 결된 교차점 인덱스와 거리의 리스트) 랜덤 입력 가정: 시작지점과 끝지점은 사용자 입력을 받는대신 랜덤으로 입 력되도록 하고, 이에 최단경로탐색을 수행한다. 출력 방법: 최단경로는 경로상의 교차점 인덱스들의 리스트를, MST는 간 선 및 간선의 가중치를 출력하여 표현하라. (간선은 (u, v)로 교차점 인덱스 쌍으로 출력) GUI모드의 경우에 1) 랜덤도로생성, 2) 최단경로탐색결과, 3) MST계산결 과 각 단계별로 출력되는 GUI화면을 캡처하여 제시하라. 콘솔모드는 대량의 랜덤 입력 테스트가 목적이며, GUI화면상의 인터페이스가 완벽하게 구동되는것이 본 절에서의 메인테스트임을 유의하라. 8

4 제출 내용 및 평가 방식 코드는 c++ (특별한 요구사항이 있을 경우 java)로 작성하도록 하고, c++프로 그램의 경우 구동os환경은 ubuntu 16.04 LTS 이상을 원칙으로 한다. 본 과제 결과물로 필수적으로 제출해야 내용들은 다음과 같다. java프로그램은 windows 10또는 ubuntu 16.04 LTS에서 동작되도록 하면 되며, 보고서에 구동 환경을 명확히 명시 (java버전 등도 함께 기술 )하라. 코드 전체 테스트 결과: 각 내용별 테스트 코드 및 해당 로그 파일 결과보고서: 구현 방법 및 실행 결과를 요약한 보고서 본 과제의 평가항목 및 배점은 다음과 같다. 각 세부내용의 구현 정확성 및 완결성 (80점) 코드의 Readability 및 쳬계성 (10점) 결과 보고서의 구체성 및 완결성 (10점) 9