본문 바로가기

알고리즘160

[BOJ] 백준 4195 친구 네트워크 (유니온 파인드 최적화 자바 풀이) https://www.acmicpc.net/problem/4195 📌 문제민혁이는 소셜 네트워크 사이트에서 친구를 만드는 것을 좋아하는 친구이다. 우표를 모으는 취미가 있듯이, 민혁이는 소셜 네트워크 사이트에서 친구를 모으는 것이 취미이다. 어떤 사이트의 친구 관계가 생긴 순서대로 주어졌을 때, 두 사람의 친구 네트워크에 몇 명이 있는지 구하는 프로그램을 작성하시오. 친구 네트워크란 친구 관계만으로 이동할 수 있는 사이를 말한다. ⚔ 제한 사항 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진다. 친구 관계는 두 사용자의 아이디로 이루어져 있.. 2025. 5. 4.
집합, 유니온 파인드 알고리즘, 개념과 구현 + 최적화 + 활용 예시까지 (시간 복잡도와 재귀 호출 스택 디테일 포함) 1. 집합(Set)과 상호배타적(Disjoint) 집합이란?1) 집합(Set)이란?수학에서 집합(Set) 이란, 어떠한 조건을 만족하는 원소(요소)들의 모임을 의미한다. 알고리즘/자료구조 영역에서도 “중복을 허용하지 않는 원소의 모임”으로 흔히 다루어진다.집합의 표기일반적으로 중괄호({ })로 감싸서 표현한다.예:\( A = \{1, 2, 3\} \) \( B = \{2, 4, 6, 8\} \)집합의 특징원소의 중복을 허용하지 않는다.\( \{1,1,2\} \)는 집합 내에서 1이 하나만 존재하므로, 결국 \( \{1,2\} \)와 동일.원소들의 순서는 상관이 없다.\( \{2,4,6\} \)과 \( \{4,6,2\} \)는 집합으로서는 동일.원소가 특정 조건을 만족하면 포함되고, 만족하지 않으면 포함.. 2025. 5. 4.
[프로그래머스] 네트워크 (자바 풀이) https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 .. 2025. 4. 29.
이진 탐색 트리로 왜 충분하지 않을까? M원 트리 그리고 B-트리의 등장 이유 (B트리, B+트리, B* 트리 연산까지) M원 트리데이터 구조에서 트리(Tree)는 계층적 데이터 관리와 검색을 위한 필수 구조이다.특히, 대규모 데이터를 효율적으로 관리하기 위해 M원 트리(M-ary Tree) 가 중요한 역할을 한다. 그런데 왜 이진 탐색 트리(Binary Search Tree, BST) 만으로는 충분하지 않은 것일까?BS 트리의 한계이진 탐색 트리는 각 노드가 최대 두 개의 자식 노드를 가지며, 왼쪽 자식 규칙을 따르는 트리를 의미한다. 그러나 다음과 같은 한계가 존재한다.1. 불균형 문제 (Skewed Tree Problem)정렬된 데이터를 순차적으로 삽입하면 한쪽으로 치우친 트리가 생성된다. 삽입 순서에 따라 불균형이 발생한다.BST (불균형 트리) 10 \ 20 .. 2025. 4. 27.
다익스트라 알고리즘 완벽 가이드: 2차원 행렬부터 우선순위 큐까지, 자바 구현으로 배우는 최단 경로 찾기 1.다익스트라?가중치(weight)가 부여된 방향 없는 혹은 방향 있는 그래프에서, 특정 시작 정점(start)으로부터 다른 모든 정점까지의 최단 경로를 찾는 알고리즘에츠허르 다익스트라가 고안하였다.특징간선의 가중치가 음수가 아닐 때만 사용 가능우선순위 큐(Priority Queue)를 활용해 효율적으로 구현2. 그래프 기본 개념정점(Vertex): 그래프를 구성하는 노드간선(Edge): 정점과 정점을 연결하는 선, 가중치(weight)를 가짐경로(Path): 한 정점에서 다른 정점으로 이동하는 과정최단 경로(Shortest Path): 여러 경로 중 가중치 합이 가장 작은 경로graph LR A((A)) --2--> B((B)) A((A)) --5--> C((C)) A((A)) --7-.. 2025. 4. 26.