01-09 04:37
Recent Posts
Recent Comments
Tags
- ์๋ฐ
- ์๋์ด๋ ธ
- appetizer
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ์ด์ฌ
- mysql
- ํ๋ก๋ณด๋ ธ
- ์กํ๊ณ
- ์คํฝ๋ ํ
- ์ด๋ธ์
- ict๊ณต๋ชจ์
- ํ์ด์
- Spring
- ์คํฝ์ค๋น
- python
- JOBํ๊ณ
- API๋ง์ผํ๋ ์ด์ค
- TSQL
- ์จ์ผ๋ํ
- Java
- DATABASE
- ICT
- RaspberryPi
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- SQL
- linux
- ICT๋ฉํ ๋ง
- ํ์ด์๊ณต๋ชจ์
- Naver Cloud
- DB
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 1967 :: ํธ๋ฆฌ์ ์ง๋ฆ ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
ํธ๋ฆฌ(tree)๋ ์ฌ์ดํด์ด ์๋ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ด๋ค.
ํธ๋ฆฌ์์๋ ์ด๋ค ๋ ๋ ธ๋๋ฅผ ์ ํํด๋ ๋ ์ฌ์ด์ ๊ฒฝ๋ก๊ฐ ํญ์ ํ๋๋ง ์กด์ฌํ๊ฒ ๋๋ค.
ํธ๋ฆฌ์์ ์ด๋ค ๋ ๋ ธ๋๋ฅผ ์ ํํด์ ์์ชฝ์ผ๋ก ์ซ ๋น๊ธธ ๋, ๊ฐ์ฅ ๊ธธ๊ฒ ๋์ด๋๋ ๊ฒฝ์ฐ๊ฐ ์์ ๊ฒ์ด๋ค.
์ด๋ด ๋ ํธ๋ฆฌ์ ๋ชจ๋ ๋ ธ๋๋ค์ ์ด ๋ ๋ ธ๋๋ฅผ ์ง๋ฆ์ ๋ ์ ์ผ๋ก ํ๋ ์ ์์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
์ด๋ฐ ๋ ๋ ธ๋ ์ฌ์ด์ ๊ฒฝ๋ก์ ๊ธธ์ด๋ฅผ ํธ๋ฆฌ์ ์ง๋ฆ์ด๋ผ๊ณ ํ๋ค.
์ ํํ ์ ์ํ์๋ฉด ํธ๋ฆฌ์ ์กด์ฌํ๋ ๋ชจ๋ ๊ฒฝ๋ก๋ค ์ค์์ ๊ฐ์ฅ ๊ธด ๊ฒ์ ๊ธธ์ด๋ฅผ ๋งํ๋ค.
์ ๋ ฅ์ผ๋ก ๋ฃจํธ๊ฐ ์๋ ํธ๋ฆฌ๋ฅผ ๊ฐ์ค์น๊ฐ ์๋ ๊ฐ์ ๋ค๋ก ์ค ๋, ํธ๋ฆฌ์ ์ง๋ฆ์ ๊ตฌํด์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋์ ๊ฐ์ ํธ๋ฆฌ๊ฐ ์ฃผ์ด์ง๋ค๋ฉด ํธ๋ฆฌ์ ์ง๋ฆ์ 45๊ฐ ๋๋ค.
ํธ๋ฆฌ์ ๋ ธ๋๋ 1๋ถํฐ n๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ํ์ผ์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ ธ๋์ ๊ฐ์ n(1 ≤ n ≤ 10,000)์ด๋ค.
- ๋์งธ ์ค๋ถํฐ n-1๊ฐ์ ์ค์ ๊ฐ ๊ฐ์ ์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด์จ๋ค.
- ๊ฐ์ ์ ๋ํ ์ ๋ณด๋ ์ธ ๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ์ฒซ ๋ฒ์งธ ์ ์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ๋ ธ๋ ์ค ๋ถ๋ชจ ๋ ธ๋์ ๋ฒํธ๋ฅผ ๋ํ๋ด๊ณ , ๋ ๋ฒ์งธ ์ ์๋ ์์ ๋ ธ๋๋ฅผ, ์ธ ๋ฒ์งธ ์ ์๋ ๊ฐ์ ์ ๊ฐ์ค์น๋ฅผ ๋ํ๋ธ๋ค.
- ๊ฐ์ ์ ๋ํ ์ ๋ณด๋ ๋ถ๋ชจ ๋ ธ๋์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ด ๋จผ์ ์ ๋ ฅ๋๊ณ , ๋ถ๋ชจ ๋ ธ๋์ ๋ฒํธ๊ฐ ๊ฐ์ผ๋ฉด ์์ ๋ ธ๋์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ด ๋จผ์ ์ ๋ ฅ๋๋ค. ๋ฃจํธ ๋ ธ๋์ ๋ฒํธ๋ ํญ์ 1์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉฐ, ๊ฐ์ ์ ๊ฐ์ค์น๋ 100๋ณด๋ค ํฌ์ง ์์ ์์ ์ ์์ด๋ค.
์ถ๋ ฅ
- ์ฒซ์งธ ์ค์ ํธ๋ฆฌ์ ์ง๋ฆ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1)
12
1 2 3
1 3 2
2 4 5
3 5 11
3 6 9
4 7 1
4 8 7
5 9 15
5 10 4
6 11 6
6 12 10
์์ ์ถ๋ ฅ 1)
45
โ
๐ป Main.java
- ๋จผ์ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ฌธ์ ๋ฅผ ํ์์๋, ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ์ค๋ฅ๊ฐ ๋ณ๋ค
- ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก ArrayList๋ก ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
- ์ผ๋จ ํน์ ๋ ธ๋(1๋ฒ ๋ ธ๋)์์ ๊ฐ์ฅ ๋จผ ๋ ธ๋๋ฅผ ์ฐพ๋๋ค.
- ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋์์ ๊ฐ์ฅ ํฐ ์ง๋ฆ์ ์ฐพ์์ค๋ค.
/* ๋ฐฑ์ค ๊ทธ๋ํ - 1967 :: ํธ๋ฆฌ์ ์ง๋ฆ */
import java.util.*;
import java.io.*;
class Node{
int node, dist;
public Node(int node, int dist) {
this.node = node;
this.dist = dist;
}
}
public class Main {
static ArrayList<Node>[] list;
static int n;
static int max = 0;
static int total = 0;
static int leaf;
static void dfs(int node, int parent, int total) {
if(total > max) {
max = total;
leaf = node;
}
for(Node tmp : list[node]) {
// ์ผ๋์ผ ์ฐ๊ฒฐ์ผ๋, ๋ถ๋ชจ๊ฐ์ ๋ฌด์
if(tmp.node == parent) continue;
dfs(tmp.node, node, tmp.dist + total);
}
}
@SuppressWarnings("unchecked")
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
list = new ArrayList[n + 1];
for(int i = 0; i <= n; i++)
list[i] = new ArrayList<>();
for(int i = 0; i < n - 1; i++) {
int s = sc.nextInt();
int e = sc.nextInt();
int len = sc.nextInt();
list[s].add(new Node(e, len));
list[e].add(new Node(s, len));
}
// ํน์ ์ ์ ์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ์๋ ๋
ธ๋์ ์ง๋ฆ๊ณผ ์ ๋ณด ์ป๊ธฐ
dfs(1, 0, 0);
// ๋ฆฌํ๋
ธ๋์์ ์ฌ๋ผ์ค๋ฉด์ ๊ฐ์ฅ ๊ธด ์ง๋ฆ ์ฐพ๊ธฐ
dfs(leaf, 0, 0);
System.out.println(max);
sc.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ์ด๋ถ๊ฒ์ 2805 :: ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2022.04.07 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ์ด๋ถ๊ฒ์ 1654 :: ๋์ ์๋ฅด๊ธฐ (0) | 2022.04.07 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 11725:: ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (0) | 2022.04.05 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ1991 :: ํธ๋ฆฌ ์ํ (0) | 2022.04.04 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 2146 :: ๋ค๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2022.04.04 |
Comments