이진트리 구현Java Collection Framework에는 왜 이진 트리가 없을까?균형 문제이진 트리를 사용할 때 균형을 유지하지 않으면 최악의 경우 연결 리스트처럼 동작하여 성능이 크게 저하될 수 있습니다.Java Collection Framework는 균형 이진 트리 기반 자료구조를 제공하는 것으로 이러한 문제를 해결했습니다.Red-Black Tree 사용Java의 TreeMap과 TreeSet은 모두 Red-Black Tree를 기반으로 하여 균형을 유지하면서 효율적인 탐색, 삽입, 삭제를 보장합니다.그래서 별도의 "이진 트리" 클래스가 필요하지 않습니다.직접 구현이 필요한 경우순수 이진 트리를 원한다면 직접 구현해야 합니다.위에서 제공한 Node와 BinaryTree 구현이 순수한 형태의 이진..
이진트리이진 트리는 배열이나 포인터로 구현할 수 있습니다. 배열로 이진 트리를 구현하는 방법을 먼저 알아본 후, 포인터로 구현하는 방법을 알아보겠습니다. 이진 트리는 아래와 같이 노드 하나가 최대 2개의 자식 노드를 갖습니다. 배열로 표현하기배열은 선형 자료구조이고 트리는 계층 자료구조입니다. 따라서 배열로 트리를 표현하려면 다음 3가지 규칙이 필요합니다. 참고로 이 규칙은 루트 노드를 배열 인덱스 1번이라고 생각하여 작성한 규칙입니다. 루트 노드는 배열 인덱스 1번에 저장합니다.왼쪽 자식 노드의 배열 인덱스는 부모 노드의 배열 인덱스 x 2 입니다.오른쪽 자식 노드의 배열 인덱스는 부모 노드의 배열 인덱스 x 2 + 1입니다. 위 규칙에 맞게 인덱스를 붙이면 다음과 같을 것입니다.정말 규칙에 맞게 ..
트리트리(tree)는 데이터를 저장하고 탐색하기에 유용한 구조를 갖고 있습니다. 트리가 데이터를 어떤방식으로 저장하고 탐색하는지 알아봅시다. 트리의 특성을 활용하는 분야프로그램이 분야에서 트리는 계층 구조를 표현하는 용도로 많이 사용합니다. 예를 들어 파일 시스템이나 디렉터리 구조 등을 트리로 구성하거나 관리할 수 있습니다. 인공지능 : 인공지능의 판단 기준을 만들 때 의사 결정 트리를 사용합니다. 이를 통해 외부에서 입력된 데이터를 분류하거나 상황을 예측하는 모델을 만들 수 있습니다.자동 완성 기능 : 트리는 문자열 처리에도 많이 활용됩니다. 예를 들어 검색 엔진에서 자동 검색어 추천 기능도 트라이(trie)라는 독특한 트리 구조를 활용한 것입니다. 이를 활용하면 접두사나 패턴 검색을 쉽게 할 수 있습..
24. 메뉴 리뉴얼https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다.기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다.단, 코스요리 메뉴는 최소 ..