๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/3980)
< ์ ๋ฐ ๋ช ๋จ >
๋ฌธ์ ํ์ด
ํฌ์ง์ ์ ์ ์๋ฅผ ๋ฐฐ์นํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ฌ ๋ฅ๋ ฅ์น์ ํฉ์ ์ต๋๊ฐ์ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class _3980_ { // ์ ๋ฐ ๋ช
๋จ
static int arr[][], answer[], result;
static boolean visited[];
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int c = Integer.parseInt(bf.readLine());
arr = new int[11][11];
answer = new int[11];
visited = new boolean[11];
for (int i = 0; i < c; i++) {
result = 0;
for (int j = 0; j < 11; j++) {
st = new StringTokenizer(bf.readLine());
for (int k = 0; k < 11; k++) {
arr[j][k] = Integer.parseInt(st.nextToken());
}
}
team(0);
bw.write(result + "\n");
}
bw.flush();
}
private static void team(int idx) {
if (idx == 11) {
int sum = 0;
for (int i = 0; i < 11; i++) {
sum += answer[i];
}
result = Math.max(result, sum);
return;
}
for (int i = 0; i < 11; i++) {
if (!visited[i] && arr[i][idx] > 0) {
visited[i] = true;
answer[idx] = arr[i][idx];
team(idx + 1);
visited[i] = false;
}
}
}
}
๋ณ์)
c : ํ ์คํธ ์ผ์ด์ค ๊ฐ์
arr : ์ ์์ ๋ฅ๋ ฅ
answer : ๊ฐ ํฌ์ง์ ์ ๋ฐฐ์นํ ์ ์์ ๋ฅ๋ ฅ
visited : ์ ์ ๋ฐฐ์น ์ฌ๋ถ
ํ ์คํธ ์ผ์ด์ค ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ํ ์คํธ ์ผ์ด์ค ๊ฐ์๋งํผ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) 11๋ช ์ ๋ฅ๋ ฅ์ ์ ๋ ฅ๋ฐ์ arr ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
2) ๊ฐ ํฌ์ง์ ์ ์ ์๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํด team ํจ์๋ฅผ ํธ์ถํ๋ค.
3) ๋ฅ๋ ฅ์น์ ํฉ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
team (int idx)
1) idx๊ฐ 11์ด๋ฉด ๋ชจ๋ ํฌ์ง์ ์ ์ ์๋ฅผ ๋ฐฐ์นํ๋จ ๋ป์ด๋ฏ๋ก ๋ฅ๋ ฅ์น์ ํฉ์ ๊ตฌํ ํ ์ต๋๊ฐ์ธ์ง ํ๋จํ๊ณ ์ข ๋ฃํ๋ค.
2) idx๋ฒ์งธ ํฌ์ง์ ์ ์ ์๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํด 11๋ช ์ ์ ์๋ฅผ ๋๋ฌ๋ณด๋ฉฐ ์์ง ๋ฐฐ์นํ์ง ์์ ์ ์์ด๋ฉฐ ๋ฅ๋ ฅ์น๊ฐ 0๋ณด๋ค ํฌ๋ค๋ฉด ์ ์๋ฅผ ๋ฐฐ์นํ๋ค. ๊ทธ๋ค์ idx+1๋ฒ์งธ ํฌ์ง์ ์ ์ ์๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํด team(idx+1)์ ํธ์ถํ๋ค. idx๋ฒ์งธ ํฌ์ง์ ์ ๋ค๋ฅธ ์ ์๋ฅผ ๋ฐฐ์นํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฏ๋ก ๋ฐฐ์น ์ฌ๋ถ๋ฅผ ๋๋๋ฆฐ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1456_๊ฑฐ์ ์์ (0) | 2024.03.12 |
---|---|
[Baekjoon] 5636_์์ ๋ถ๋ถ ๋ฌธ์์ด (0) | 2024.03.11 |
[Baekjoon] 2436_๊ณต์ฝ์ (0) | 2024.03.07 |
[Baekjoon] 9417_์ต๋ GCD (0) | 2024.03.06 |
[Baekjoon] 1461_๋์๊ด (0) | 2024.03.05 |