b1774. 우주신과의 교감
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1774 🌌 자바로 푸는 우주신과의 교감 문제 풀이 📌 문제 개요 백준 1774번 우주신과의 교감 문제는N개의 신들과 이미 연결된 M개의 통로 정보가 주어졌을 때,모든 우주신이 연결되도록 추가로 연결해야 할 최소 거리의 합을 구하는 문제입니다. 각 우주신은 2차원 좌표 위에 존재이미 연결된 통로는 추가 비용 없이 사용 가능목표는 전체 우주신을 연결하는 최소 비용 💡 예제 입력4 11 12 22 43 31 4 예제 출력2.00 🛠 알고리즘 접근 방식 이 문제는 기존 연결 정보를 고려한 최소 신장 트리(MST) 문제입니다. ✅ 핵심 아이디어 크루스칼 알고리즘을 사용해 거리 기준 오름차순 간선 선택M개의 이미 연결된 통로는 먼저 uni..
b20040. 사이클게임
·
Algorithm & Data Structures/BOJ
🔁 자바로 푸는 사이클 게임 문제 풀이 📌 문제 개요 백준 20040 - 사이클 게임 문제는N개의 정점이 있고, M개의 간선을 순차적으로 연결할 때사이클이 처음 생기는 시점을 출력하는 문제입니다. 간선은 차례로 연결되며,간선을 연결할 때 사이클이 생기면 그 **차례(1-indexed)**를 출력끝까지 사이클이 없으면 0을 출력 💡 예제 입력6 50 11 22 30 34 5 예제 출력4 🧠 알고리즘 접근 방식 이 문제는 전형적인 Union-Find(서로소 집합) 알고리즘을 활용해사이클을 탐지하는 문제입니다. 간선을 하나씩 연결하며, 두 노드가 이미 같은 집합이면 사이클 발생그렇지 않으면 두 집합을 합침 (union)사이클이 생긴 첫 번째 간선의 번호를 출력 🧾 코드 해설// 부모 배열 초기..
b4195. 친구네트워크
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/4195 👥 자바로 푸는 친구 네트워크 문제 풀이 📌 문제 개요 백준 4195번 - 친구 네트워크 문제는여러 명이 친구 관계로 연결될 때,각 관계마다 현재 친구 네트워크의 크기를 출력하는 문제입니다. 친구 관계가 주어짐 (A B → A와 B가 친구)친구 관계가 생길 때마다, A와 B가 속한 전체 네트워크(연결된 집합)의 크기를 출력이름은 문자열로 주어짐 💡 예제 입력23Fred BarneyBarney BettyBetty Wilma3Fred BarneyBetty WilmaBarney Betty 예제 출력2 3 4 2 2 4 🛠 알고리즘 접근 방식 핵심은 Union-Find (Disjoint Set) 알고리즘이름이 문자열이기..
b1976. 여행가자
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1976 ✈ 자바로 푸는 여행가자 문제 풀이📌 문제 개요 여행 계획에 따라 여러 도시를 순서대로 방문할 수 있는지 판단하는 문제입니다.도시 간의 연결 여부가 주어지며, 여행 경로에 포함된 모든 도시가 **같은 네트워크(연결된 그룹)**에 있어야 합니다. 1은 도시간 연결을 의미하고 0은 연결이 없음을 의미합니다.Union-Find(Disjoint Set)를 활용하여 각 도시가 같은 그룹에 속하는지 판단하면 됩니다. 💡 예제 입력330 1 01 0 10 1 01 2 3출력:YES 🧠 알고리즘 접근 방식 Union-Find 자료구조를 사용해 도시 간 연결 정보를 하나의 집합으로 병합합니다.여행 계획에 포함된 도시들이 **모두 같은 집합..
b1717. 집합의 표현
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1717 🧩 자바로 푸는 집합의 표현 문제 풀이 📌 문제 개요 백준 1717번 집합의 표현 문제는 Disjoint Set(서로소 집합) 자료구조의 기본 동작인 Find와 Union을 구현하는 대표적인 문제입니다. 연산 종류0 a b : a와 b가 속한 집합을 합친다.1 a b : a와 b가 같은 집합에 포함되어 있는지 확인한다. 💡 예제 입력7 80 1 31 1 70 7 61 7 10 3 70 4 20 1 11 1 1예제 출력:NONOYES 🧠 알고리즘 접근 방식 핵심은 Union-Find 알고리즘입니다.각 원소는 자신이 속한 집합의 대표(parent)를 가리킵니다.find(x)를 통해 대표를 찾고, union(x, y)를 통해..
b4803. 트리
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/4803 📌 자바(Java)로 푸는 트리 - 백준 4803 🌳사이클 탐지 + 연결 요소(트리) 개수 구하기 (Union-Find) 🔎 문제 개요 백준 4803 - 트리 문제는, 주어진 그래프에서 사이클이 없는 연결 요소(트리)를 찾아야 하는 문제입니다.하나의 그래프 안에 여러 개의 트리가 있을 수 있으며,사이클이 있는 연결 요소는 트리로 취급하지 않습니다. 💡 예제 입력6 31 22 35 66 52 10 0 💡 예제 출력Case 1: A forest of 2 trees.Case 2: No trees. 🛠 알고리즘 접근 방식 이 문제는 전형적인 Union-Find(Disjoint Set) 알고리즘에✔ 사이클 감지를 덧붙이는 문제입니..
b1197. 최소 스패닝 트리
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1197   크루스칼 알고리즘을 활용하여 문제를 풀이하였다.최근 문제 풀이한 것 중에서 크루스칼이 있었고 간선을 가중치기준으로 정렬하여풀었던 기억이 있어 그방식대로 풀었다. 풀이과정은 비교적 간단하고이번 문제 풀이에서 기억에 남는것은  union find 를 활용할 때경로 압축이다. find() 함수에서 if(p[a] == a) 일때 return a를 하는것이아니라if(p[a]!=a) 일때 p[a] = find(a)를 해주고 return p[a] 를 하게되면 정점의갯수가 많아지고 간선이 많아지더라도 시간복잡도가 확실히 줄어든 다는점을알게되었다. 예를들어 정점이 6개고 parent 배열이 union(1, 2), union(2, 3) union(3, ..