1. 특정 영화 상영 극장 목록 조회 APIDTO1. TheaterResponse(최상위 응답) 최종 JSON 응답의 형태, 이 리스트는 서울,경기,부산 등 모든 지역 그룹을 담고 있음2. RegionTheaterGroup(지역 그룹 객체) 특정 지역에 속한 상영관들의 그룹 정보와 목록은 담는 컨테이너 3. TheaterInfo(개별 상영관 정보)하나의 상영관에 대한 필수정보만 포함하는 최소 단위 DTOService1. 해당 영화의 상영관 목록 추출2. 조회된 상영관 목록을 지역별로 그룹화3. 그룹화된 Map을 RegionTheaterGroup DTO 리스트로 변환4. 최종 응답 DTO에 담아 반환2. 특정 극장의 상영 시간표 및 좌석 조회 APIService 1. 특정 조건에 맞는 상영정보 리스트 조회..
💡 KOFIC(영화진흥위원회) API는 영화 코드, 개봉일, 등급 등 정확한 메타데이터는 제공하지만, 포스터 URL이나 상세 줄거리 정보는 제공하지 않아 두가지 API를 사용했다.영화진흥위원회 API 사용해서 일별 박스오피스와 영화 상세정보 가져오기TMDB API 사용해서 포스터 URL과 줄거리 가져오기 우선 영화진흥위원회 사이트에서 회원가입을 하고 키를 발급 받아야 한다. 1. 일별 박스오피스 목록 조회controller단에서 tagertDt를 받고 요청을 받은 BoxOfficeServiceImpl이 실제 KOFIC API와 통신을 시작한다. // ServiceImplString url = BOX_OFFICE_API_URL + "?key=" + apiKey + "&targetDt=" + target..
1. 회원가입사용자의 실제 비밀번호가 노출되는 것을 막기 위해 일방향 해시 방식을 사용하여 passwordEncoder 를 사용했다.passwordEncoder는 사용자가 회원가입 시 입력한 평문 비밀번호를 다시 되돌릴 수 없는 일방향 해시 값으로 변환하여 데이터베이스에 저장한다. // 2. 비밀번호 암호화 String encodedPassword = passwordEncoder.encode(request.getPassword()); // 3. Users 엔티티 생성 및 저장 Users newUser = Users.builder() .email(request.getEmail()) .password(enco..
🌳 1️⃣ BST (Binary Search Tree, 이진 탐색 트리)📘 개념왼쪽 자식 정렬된 구조라서 탐색, 삽입, 삭제가 빠름→ 평균 O(log N)하지만 균형이 무너지면 O(N) (한쪽으로 치우친 트리)시간 복잡도 : 평균 O(log N), 최악 O(N)⚙️ 쓰임기본적인 개념용, 학습용메모리 상에서 간단한 탐색 구조를 구현할 때⚠️ 단점데이터가 정렬된 순서로 들어오면 선형 구조가 되어 느려짐(즉, 트리의 균형이 무너짐)🌲 2️⃣ AVL Tree (균형 이진 탐색 트리)📘 개념BST를 개선한 자기 균형 트리모든 노드의 왼쪽·오른쪽 서브트리 높이 차 ≤ 1탐색: O(log N)삽입/삭제 시 회전(Rotation) 으로 균형 유지시간 복잡도 : 항상 O(log N)⚙️ 쓰임검색이 매우 빈번한 시..
🌳 B-Tree란?데이터를 정렬된 상태로 저장하고, 검색, 삽입, 삭제를 효율적으로 수행할 수 있는 균형 트리 구조이다. 자녀 노드의 최대 개수를 늘리기 위해서 부모 노드에 key를 하나 이상 저장된다.부모 노드의 key들을 오름차순으로 정렬정렬된 순서에 따라 자녀 노드들의 key 값의 범위가 결정된다.➡ 탐색 속도(log n)를 유지하면서➡ 디스크 접근 횟수를 최소화하도록 설계된 트리➡ B tree는 BST를 일반화한 tree M : 각 노드의 최대 자녀 노드 수M-1 : 각 노드의 최대 key 수⌈M/2⌉ : 각 노드의 최소 자녀 노드 수(root node, leaf node 제외)⌈M/2⌉-1 : 각 노드의 최소 key 수 (root node 제외) 🌳 B-Tree 삽입추가는 항상 leaf 노..
🧩 Red-Black 트리란?이진 탐색 트리(BST)의 한 종류스스로 균형 잡는 트리BST의 worst case의 단점을 개선모든 노드는 red 혹은 black TreeMap과 TreeSet 사용 예시🎨 Red-Black 트리의 5가지 속성각 노드는 빨강 또는 검정이다.루트 노드는 항상 검정이다.모든 리프 노드(nil노드)는 검정으로 간주된다.빨강 노드의 자식은 항상 검정 노드이다.(즉, 빨강이 연속으로 두 번 나오면 안된다.)임의의 노드에서 자손 nil 노드들까지 가는 경로들의 black 수는 같다.(자기 자신은 카운트에서 제외)🧠 1️⃣ 삭제의 기본 아이디어레드 - 블랙 트리도 결국 이진 탐색 트리 기반, 그래서 삭제 자체는 BST 삭제 규칙과 똑같이 시작삭제하려는 노드가자식이 0개(리프) →..
1️⃣ 기본 개념이진 트리의 한 종류로, 모든 노드의 왼쪽 서브 트리는 해당 노드의 값보다 작은 값들만 가지고 모든 노드의 오른쪽 서브 트리는 해당 노드의 값보다 큰 값들만 가진다.이진 탐색 트리의 최소값 : 트리의 가장 왼쪽에 존재이진 탐색 트리의 최대값 : 트리의 가장 오른쪽에 존재중위 순회 : 방문순서 - 왼쪽 서브트리 → 루트(부모) → 오른쪽 서브트리노드의 successor(후임자) : 해당 노드보다 값이 큰 노드들 중에서 가장 값이 작은 노드노드의 predecessor(선임자) : 해당 노드보다 값이 작은 노드들 중에서 가장 값이 큰 노드🌳 삽입 (Insertion)✅ 규칙: 삽입할 값을 루트부터 비교하면서작으면 왼쪽으로크면 오른쪽으로 이동빈자리에 도달하면 새 노드를 삽입🔍 검색 (Sear..