첫 번째 줄에 고리 회원의 수 N (1 ≤ N ≤ 30) 과 치킨 종류의 수 M (3 ≤ M ≤ 30) 이 주어집니다.
두 번째 줄부터 N개의 줄에 각 회원의 치킨 선호도가 주어집니다.
i+1번째 줄에는 i번째 회원의 선호도 ai,1, ai,2, ..., ai,M (1 ≤ ai,j ≤ 9) 가 주어집니다.
첫 번째 줄에 고리 회원들의 만족도의 합의 최댓값을 출력합니다.
이상하게 안풀리던 문제..
풀고나니깐 왜 못풀었는지도 이해 안가는 문제
되게 어려운 문제는 아니었다~
import java.util.Scanner;
public class Main {
static int[][] chicken;
static boolean[] visited;
static int n, m, max = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
chicken = new int[n][m];
visited = new boolean[m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
chicken[i][j] = sc.nextInt();
}
}
getMax(0, 0);
System.out.println(max);
}
static void getMax(int depth, int start) {
if (depth == 3) {
int sum = 0;
for (int i = 0; i < n; i++) {
int num = Integer.MIN_VALUE;
for (int j = 0; j < m; j++) {
if (visited[j]) {
num = Math.max(num, chicken[i][j]);
}
}
sum += num;
}
max = Math.max(max, sum);
}
for (int i = start; i < m; i++) {
if (!visited[i]) {
visited[i] = true;
getMax
(depth + 1, i + 1);
visited[i] = false;
}
}
}
}