본문 바로가기
반응형

🌈 백엔드/자료구조31

자료구조_비선형구조 ① 트리 - 트리셋 TreeSet [1] TreeSet (1) Tree Set 특징 중복 허용 안됨 정렬된 순서에 의해 반복 TreeMap을 이용하여 구현된 형태이다 인덱스 위치를 통해 저장과 접근을 하는것이 아닌 key를 이용하고 싶을 경우 사용한다 저장되는 데이터의 갯수가 몇개인지 예상되지 않는 경우 사용한다 정렬된 값이 필요할때 사용한다 삽입 삭제가 빈번하지 않을때 사용한다 객체의 정렬에 사용하는 클래스 Set 인터페이스를 구현하여 중복을 허용하지 않고, 오름차순이나 내림차순으로 객체를 정렬할 수 있음 내부적으로 이진검색트리(binary search tree)로 구현됨 이진검색트리에 저장하기 위해 각 객체를 비교해야 함 비교 대상이 되는 객체에 Comparable이나 Comparator 인터페이스를 구현 해야 TreeSet에 추가 .. 2023. 3. 8.
자료구조_비선형구조 ① 트리 - 트리맵 TreeMap Map 인터페이스를 구현한 클래스이고 key에 대한 정렬을 구현할 수 있음 key가 되는 클래스에 Comparable이나 Comparator인터페이스를 구현함으로써 key-value 쌍의 자료를 key값 기준으로 정렬하여 관리 할 수 있음 2023. 3. 8.
자료구조_비선형구조 ① 트리 - 힙트리 HeapTree (1)힙트리 Heap tree 정렬에 사용되느 이진트리 항상 전이진 트리를 구성 중복된 값을 허용 힙은 최대값,최소값 검색을 위한 구조 Max heap 최대 힙 : 부모 노드 키 > 자식 노드 키 Min heap 최소 힙 : 부모 노드 키 < 자식 노드 키 우선순위 큐를 위하여 만들어진 자료구조 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리 ※ 완전이진트리 : 노드 삽입 할 때부터 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 부모 노드의 값은 자식 노드의 값보다 큰 상태를 유지한다 추가하기 왼쪽 하단부부터 노드가 채워지는 형태 노드가 채워진다면 숫자 순서대로 채워진다 추가한다면 마지막 노드를 생성하고 부모 노드가 자신보다 클때까지 부모로 올라간다. 삭제하기 상단 데이터 삭제시 하단.. 2023. 3. 8.
자료구조_비선형구조 ① 트리 - 이진 탐색 트리 [1] 이진검색트리 (1) 이진트리 binary tree 부모노드에 자식노드가 두 개 이하인 트리 컴퓨터 응용에서 가장 많이 사용한다 모든 노드가 최대 2개의 서브 트리를 가진다 왼쪽 서브 트리와 오른쪽 서브 트리로 구분한다 편향 이진트리 , 포화 이진트리 , 완전 이진트리가 있다 (2) 이진 검색 트리 binary search tree [23,10,48,15,7,22,56] 순으로 자료를 넣은 트리 임의의 키를 가진 원소를 삽입, 삭제, 검색하는데 효율적인 자료구조 모든 연산은 키값을 기준으로 수행 검색을 중심으로 만들어진 트리 자료(key)의 중복을 허용하지 않음 왼쪽 자식 노드는 부모 노드보다 작은 값, 오른쪽 자식 노드는 부모 노드보다 큰 값을 가짐 자료를 검색에 걸리는 시간이 평균 log(n) .. 2023. 3. 8.
자료구조_선형구조 ④ 큐 [1] 큐 (1) 큐의 개념 먼저 들어간 자료는 가장 먼저 나가고 , 마지막에 들어간 자료는 제일 마지막에 나온다 FIFO 구조 선입선출 일괄처리, 스풀 운영에 활용한다 모든 스케쥴링, 버퍼, 트리의 level order에 사용한다 배열, 연결리스트로 구현할수 있으나 오버플로가 발생한다 ->무빙큐 , 원형큐, 연결리스트 대처 맨 앞(front) 에서 자료를 꺼내거나 삭제하고, 맨 뒤(rear)에서 자료를 추가 함 순차적으로 입력된 자료를 순서대로 처리하는데 많이 사용 되는 자료구조 콜센터에 들어온 문의 전화, 메세지 큐 등에 활용됨 [2] 큐의 종류 (1) 선형큐 ※ front : 첫 요소 앞의 인덱스 자리 명칭 / real : 마지막 요소의 인덱스 자리 명칭 rear (뒤) : 삽입 push → 4 3.. 2023. 3. 8.
자료구조_선형구조 ③ 스택 [1] 스택 (1) 스택의 개념 자료를 넣는 push와 자료를 빼는 pop 입구가 같아 먼저 들어간 자료는 마지막에, 나중에 들어간 자료는 첫번째로 나온다 삽입과 삭제가 한쪽으로만 이루어지는 리스트 가장 나중에 입력 된 자료가 가장 먼저 출력되는 자료 구조 LIFO 구조 후입선출 수식계산 , 복귀주소, 이진트리운행 등에 사용한다 배열로 구현시 고정된 크기이므로 오버플로 검사를 수행해야함 연결리스트로 구현시 배열보다 복잡하지만 오버플로 검사할필요없다 가장 최근에 넣은 데이터를 꺼낼때 최근 했던 행동 취소하고 돌아가야하는 상황일때 디피 우선탐색 할때도 사용한다 맨 마지막 위치(top)에서만 자료를 추가,삭제, 꺼내올 수 있음 ( 중간의 자료를 꺼낼 수 없음) 가장 최근의 자료를 찾아오거나 게임에서 히스토리를.. 2023. 3. 8.
자료구조_선형구조 ②연결리스트 LinkedList [1] 연결 리스트 구성 (1) 노드 리스트의 원소 (2) 포인터 변수 메모리 공간의 주소를 저장하는 변수 (3)구조체 여러개의 변수를 묶어서 만든 자료형 C언어, C#언어에 존재 , JAVA는 구조체 정의가 없다 (4) 연결리스트 개요 데이터 삽입, 삭제를 포인트 조작으로 가능하다 자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있음 자료가 추가 될때 노드 만큼의 메모리를 할당 받고 이전 노드의 링크로 연결함 (정해진 크기가 없음) 기존 데이터 변경없이 노드를 추가할수 있다 데이터 삽입시 사용 공간의 오버플로가 없다 헤드부터 링크를 따라가며 검색한다 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 [2] 연결 리스트 종류 (1) 단순 연결 리스트 전진검색만 가능하다 처음부터 .. 2023. 2. 16.
자료구조_선형구조 ① 연접리스트 : 행렬 [1] 행렬의 종류 (1) 정방행렬 행의 수와 열의 수가 같은 행렬 (2)희소행렬 전체 원소에서 0이 아닌 값이 적은 행렬 단점 : 기억 공간의 낭비 -> 배열 , 연결리스트로 대처 연산이 복잡해진다 0이 아닌 원소들을 [행,열,값]의 2차원 배열로 표현가능 (3) 삼각행렬 대각선을 기준으로 위쪽 또는 아래쪽으로만 0이 아닌 값을 가진 정방 행렬 2023. 2. 14.
자료구조_선형구조 ① 연접리스트 : 배열 Array [1] 배열 (1) 배열 정의 순차적 자료구조 = 선형 자료구조 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 중복값이 없다는 전제라면 자료구조는 집합을 고려하고 아니라면 자료구조는 배열로 선택해야한다 (2) 배열 특징 물리적 위치와 논리적 위치가 동일하다 인덱스 연산자를 이용하여 참조한다 배열의 순서는 0부터 시작한다 정해진 크기가 있음 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대해 구현하는 작업을 해야한다 요소의 개수가 배열의 길이보다 커지만 배열을 재할당하고 복사하는 작업이 필요하다 각 저장공간이 연속적으로 배치되어있다 (3) 배열의 길이 배열의 크기는 정해져있다 메모리 공간안에 배열이 저장된다 . 메모리 공간이 배열의 크기만.. 2023. 2. 13.
자료구조_선형구조 ① 연접리스트 : 배열리스트 ArrayList [1] ArrayList (1) ArrayList 정의 배열의 단점을 보완하기 위해 java.util 패키지에서 제공해주는 클래스이다 (2) ArrayList 선언하기 ArrayList arr = new ArrayList(); ArrayList arr = new ArrayList(); ArrayList arr = new ArrayList(); [2] ArrayList 메서드 (1) add() 메서드 boolean add( E e) 요소 하나를 배열에 추가한다 E : 요소의 자료형 add(index , element) : 몇번 인덱스에 어떤 값을 추가한다 ArrayList a1 = new ArrayList(); a1.add(1); a1.add("hi"); a1.add(2); a1.add("안녕"); a1... 2023. 2. 11.
반응형