Tags
- PGM
- ์ ๋ ฌ
- ๊ทธ๋ํ ํ์
- ์ํ
- greedy
- queue
- ๊ต์ฌ
- ๊ทธ๋ํ ์ด๋ก
- Java
- BOJ
- ์ ์๋ก
- Brute Force Algorithm
- Dynamic Programming
- Study
- LV2
- CodingTest
- ์๋ฎฌ๋ ์ด์
- stack
- ๋๋น ์ฐ์ ํ์
- ๋ฌธ์์ด
- DP
- ์๋ฃ๊ตฌ์กฐ
- SpringBoot
- Python
- sort
- BFS
- ๊น์ด ์ฐ์ ํ์
- dfs
- ๋ฐฑํธ๋ํน
- ๊ตฌํ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_10971 : ์ธํ์ ์ํ 2 ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N๊ฐ์ ๋์์์ ๋ชจ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ๋ง์ง๋ง์ ์ถ๋ฐ์ง๋ก ๋์์ค๋ ์ฌํ ๊ฒฝ๋ก ์ค ๊ฐ์ฅ ์ ์ ๋น์ฉ์ ์ถ๋ ฅํ๋ค.
- ์ฌ๊ท์ ๋ฐฑํธ๋ํน์ ํตํด ๊ตฌํํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static int N, W[][], MIN, ans, city;
private static boolean[] visited;
private static void recursion(int now, int cost, int cnt) {
if (cost > MIN) {
return;
}
if (cnt == N) {
if (W[now][city] > 0) {
cost += W[now][city];
MIN = Math.min(MIN, cost);
}
return;
}
for (int i = 0; i < N; i++) {
if (!visited[i] && W[now][i] > 0) {
visited[i] = true;
recursion(i, cost + W[now][i], cnt + 1);
visited[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
// Input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
N = Integer.parseInt(br.readLine());
W = new int[N][N];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
W[i][j] = Integer.parseInt(st.nextToken());
}
}
// Recursion
ans = Integer.MAX_VALUE;
for (int i = 0; i < N; i++) {
city = i;
MIN = Integer.MAX_VALUE;
visited = new boolean[N];
visited[i] = true;
recursion(i, 0, 1);
ans = Math.min(ans, MIN);
}
// Output
System.out.println(ans);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋ชจ๋ ๋์๋ฅผ ํ ๋ฒ์ฉ ์ถ๋ฐ์ง(๋์ฐฉ์ง)๋ก ๋๊ณ , ์ฌ๊ท ๋ฉ์๋ recursion()์ ํธ์ถํ๋ค.
- recursion() ์์์ ํ๋์ฉ ๋ฐฉ๋ฌธํด ๋ณธ๋ค.
- ๋ชจ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ์ผ๋ฉด ๋น์ฉ์ ๊ณ์ฐํด ์ต์๊ฐ์ ์ ์ฅํ๋ค.
- ๋น์ฉ์ ๋์ ํด์ ์ฌ๊ท ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก, ์ ์ฒด ๋น์ฉ ๊ณ์ฐ์ ์ค๋ณต์ ์ค์ธ๋ค.
- ์ด๋ฏธ ์ฐพ์ ๋น์ฉ๋ณด๋ค ํ์ฌ ๋์ ๋น์ฉ์ด ์ปค์ก์ผ๋ฉด, ๋ณผ ํ์๋ ์์ผ๋ฏ๋ก ๋ฆฌํดํ๋ค.
๐ธ end ๐ธ
- ์ฌ๊ท๋ฅผ ๊ตฌํํ๋๊ฑด ๊ฐ๋จํ์ง๋ง, ๊ฐ ๋น์ฉ์ด ์ต๋ 100๋ง๊น์ง ๊ฐ๋ฏ๋ก ๋ฐฑํธ๋ํน์ด ๊ผญ ํ์ํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_2636 : ์น์ฆ (0) | 2023.04.06 |
---|---|
BOJ_1600 : ๋ง์ด ๋๊ณ ํ ์์ญ์ด (0) | 2023.04.06 |
BOJ_1010 : ๋ค๋ฆฌ ๋๊ธฐ (0) | 2023.04.06 |
BOJ_1463 : 1๋ก ๋ง๋ค๊ธฐ (0) | 2023.03.30 |
BOJ_7662 : ์ด์ค ์ฐ์ ์์ ํ (0) | 2023.03.29 |