풀이 전형적인 최소신장트리를 만드는 문제이다. 크루스칼 알고리즘, 프림 알고리즘을 사용하여 해결할 수 있느데 여기서는 크루스칼 알고리즘을 사용하였다. 각 섬들의 좌표를 입력받아 Point라는 객체로 만들어 island 리스트에 추가하였다. 즉, island 리스트에는 각 섬들의 x,y 좌표가 들어가 있다. 이제 각각 섬 간의 간선에 대한 가중치를 구하여야 하므로 Edge 클래스를 새로 만들어 주었다. edge리스트는 Edge클래스 자료형으로 저장되고 모든 섬들을 연결하여(중복 제외) 가중치를 저장하였다. 마지막으로 크루스칼 알고리즘을 통해 사이클이 생성되지 않으면서 모든 섬을 연결하여 가중치 합의 최소값을 구하였다. 코드
인덱스 검색 조건에 부합하는 데이터를 효과적으로 검색할 수 있도록 돕는 기능, 인덱스키로 정렬되어 있어 조회 속도가 빠름, DML 작업 효율은 저하함. 트리기반 인덱스: DBMS에서 사용하는 가장 일반적인 인덱스, 1) 루트 블록 2) 브랜치 블록 3) 리프블록으로 구성됨. 포인터: 루트 블록과 브랜치 블록의 키 값, 하위 블록 키 값의 범위 정보 리프 블록은 1) 인덱스키 2)ROWID로 구성됨, Doubly Linked List 형태라서 양방향 탐색 가능 ※ROWID: Oracle에서 데이터를 구분할 수 있는 유일한 값, 데이터를 입력하면 자동으로 생성됨, 데이터가 어떤 데이터 파일의 어느 블록에 속해 있는지 알려줌. - 오브젝트 번호: 해당 데이터가 속하는 오브젝트 번호, 오브젝트 별로 유일한 값을..
윈도 함수 순위: RANK(중복 순위 포함), DENSE_RANK(중복 순위 무시), ROW NUMBER(단순히 행 번호 표시, 값에 무관하게 고유한 순위 부여) 집계: SUM, MAX, MIN, AVG, COUNT 행 순서: FIRST_VALUE, LAST_VALUE, LAG(이전 행), LEAD(이후 행) 비율: CUME_DIST(현재 행 이하 값을 포함한 누적 백분율), PERCENT_RANK(백분율 순서), NTILE(전체 데이터 A등분), RATIO_TO_REPORT(총합계에 대한 값의 백분율) 윈도 함수에는 OVER 문구가 필수 키워드로 포함! SELECT 칼럼명, 칼럼명,.... , WINDOW_FUNCTION (ARGUMENTS) OVER ([PARTITION BY 칼럼] [ORDER BY..