๋ฌธ์ ์ ๊ทผ์ ํ๋จ
1. ๋ฌธ์ ์์ฝ
์ถฉ์ ์ง๋ฅผ ๊ตํํ๋ ๋ฐฉ์์ ์ ๊ธฐ๋ฒ์ค๋ฅผ ์ดํํ๋ ค๊ณ ํ๋ค. ์ ๋ฅ์ฅ์๋ ๊ต์ฒด์ฉ ์ถฉ์ ์ง๊ฐ ์๋ ๊ตํ๊ธฐ๊ฐ ์๊ณ , ์ถฉ์ ์ง๋ง๋ค ์ต๋๋ก ์ดํํ ์ ์๋ ์ ๋ฅ์ฅ ์๊ฐ ์ ํด์ ธ ์๋ค.
์ถฉ์ ์ง๊ฐ ๋ฐฉ์ ๋๊ธฐ ์ ์ ๊ต์ฒดํ๋ฉฐ ์ดํํด์ผ ํ๋๋ฐ ๊ต์ฒดํ๋ ์๊ฐ์ ์ค์ด๋ ค๋ฉด ์ต์ํ์ ๊ต์ฒด ํ์๋ก ๋ชฉ์ ์ง์ ๋์ฐฉํด์ผ ํ๋ค.
์ ๋ฅ์ฅ๊ณผ ์ถฉ์ ์ง์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, ๋ชฉ์ ์ง์ ๋์ฐฉํ๋๋ฐ ํ์ํ ์ต์ํ์ ๊ตํํ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค. ๋จ, ์ถ๋ฐ์ง์์์ ๋ฐฐํฐ๋ฆฌ ์ฅ์ฐฉ์ ๊ตํํ์์์ ์ ์ธํ๋ค.
๋ค์์ 1๋ฒ์์ ์ถ๋ฐ 5๋ฒ์ด ์ข ์ ์ธ ๊ฒฝ์ฐ์ ์์ด๋ค.
์ ๋ฅ์ฅ | 1 | 2 | 3 | 4 | 5 |
์ถฉ์ ์ง | 2 | 3 | 1 | 1 |
1๋ฒ์์ ์ฅ์ฐฉํ ์ถฉ์ ์ง ์ฉ๋์ด 2์ด๋ฏ๋ก, 3๋ฒ ์ ๋ฅ์ฅ๊น์ง ์ดํํ ์ ์๋ค. ๊ทธ๋ฌ๋ 2๋ฒ์์ ๋ฏธ๋ฆฌ ๊ต์ฒดํ๋ฉด ์ข ์ ๊น์ง ๊ฐ ์ ์๋ค.
๋ง์ง๋ง ์ ๋ฅ์ฅ์๋ ๋ฐฐํฐ๋ฆฌ๊ฐ ์๋ค.
[์ ๋ ฅ]
์ฒซ ์ค์ ํ ์คํธ์ผ์ด์ค์ ์ T๊ฐ ์ฃผ์ด์ง๋ค. 1<=T<=50
๋ค์ ์ค๋ถํฐ ํ ์คํธ ์ผ์ด์ค์ ๋ณ๋ก ํ ์ค์ ์ ๋ฅ์ฅ ์ N, N-1๊ฐ์ ์ ๋ฅ์ฅ ๋ณ ๋ฐฐํฐ๋ฆฌ ์ฉ๋ Mi๊ฐ ์ฃผ์ด์ง๋ค. 3<=N<=100, 0 ๏ผ Mi ๏ผ N
[์ถ๋ ฅ]
๊ฐ ์ค๋ง๋ค "#T" (T๋ ํ ์คํธ ์ผ์ด์ค ๋ฒํธ)๋ฅผ ์ถ๋ ฅํ ๋ค, ๋ต์ ์ถ๋ ฅํ๋ค
2. ํ์ด
1๋ถํฐ charge[idx] ๋งํผ ์ด๋ํ ์ ์์ผ๋ฏ๋ก for๋ฌธ์ ์ฌ์ฉํด์ dfs๋ฅผ ๋๋ฆฐ๋ค.
์ฒ์์๋ for๋ฌธ์ ์ฐ์ง ์๊ณ (+1)๊ณผ (charge[idx]) ๋ ๊ฒฝ์ฐ์์ ๋ฐฐํฐ๋ฆฌ๋ฅผ ๊ต์ฒดํ ๋๋ง dfs๋ฅผ ๋๋ ธ๋๋ฐ
์ด๋ ๊ฒ ํ๋ ์ด์ข๊ฒ ํ ์ผ๋ ์ ๋์ค์ง๋ง (+2) ~ (charge[idx]-1) ์์ ๋ฐฐํฐ๋ฆฌ ๊ต์ฒดํ์ ๊ฒฝ์ฐ๋ ์๊ฐํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ถ๋ช ์ค๋ต์ด ๋์์ ๊ฒ์ด๋ค.
3. ์ฝ๋
import java.io.*;
import java.util.*;
public class SW_5208_์ ๊ธฐ๋ฒ์ค2 {
static int[] charge;
static int N, ans;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int T = Integer.parseInt(br.readLine());
for (int tc=1; tc<=T; tc++) {
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
charge = new int[N-1];
for (int n=0; n<N-1; n++) {
charge[n] = Integer.parseInt(st.nextToken());
}
ans = Integer.MAX_VALUE;
dfs(0,-1);
System.out.println("#"+tc+" "+(ans));
}
}
static void dfs(int idx, int cnt) {
if (cnt > ans) return;
if (idx >= N-1) {
ans = Math.min(ans, cnt);
return;
}
int max = charge[idx];
for (int i=max; i>0; i--) {
dfs(idx+charge[i], cnt+1);
}
}
}
4. ์ฌ๋ด
๋ถ์กฑํ๋ค.. ๋ํด๋ผ ๋ํด
'Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA] 2382. [๋ชจ์ SW ์ญ๋ํ ์คํธ] ๋ฏธ์๋ฌผ ๊ฒฉ๋ฆฌ - Java (0) | 2022.11.21 |
---|---|
[SWEA] 7733. ์น์ฆ ๋๋ - Java (0) | 2022.11.20 |
[SWEA] 4727. ๊ฒฌ์ฐ์ ์ง๋ (18.8.6 ์์ ) - Java (0) | 2022.11.20 |
[SWEA] 2819. ๊ฒฉ์ํ์ ์ซ์ ์ด์ด ๋ถ์ด๊ธฐ (1) | 2022.11.20 |
[SWEA] 8382. ๋ฐฉํฅ ์ ํ - Java (0) | 2022.11.14 |