문제풀이
문제가 처음에 이해가 잘 안됐다. '한 사람의 만족도는 시킨 치킨 중에서 선호도가 가장 큰 값으로 결정' 이 부분을 주의깊게 읽어야했다. 시킨 치킨 중에서 가장 큰 값을 찾아야 하는데 가장 큰 값을 보고 치킨을 골랐다. 즉 3개의 치킨을 고른 후 만족도가 가장 큰 값을 결정하는 것을 반복& 값 비교하면 된다
삼중for문은 치킨 조합을 만들기 위해서고 ' 한 사람의 만족도는 시킨 치킨 중에서 선호도가 가장 큰 값으로 결정'을 구현하기 위해서 안에서 for문을 사람수만큼 돌리면서 Math.max로 값을 비교한다.
for(int l=1;l<=n;l++){
cur+=Math.max(Math.max(arr[l][i], arr[l][j]),arr[l][k]);
}
이후 치킨 조합끼리 또 비교해야한다. 어떤 조합으로 해야 최대 만족도가 나오는지를 비교하는 과정이다.
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[][] arr=new int[n+1][m+1];
for(int i=1;i<=n;i++){
st = new StringTokenizer(br.readLine());
for(int j=1;j<=m;j++){
arr[i][j]=Integer.parseInt(st.nextToken());
}
}
int cur=0;
int ans=0;
for(int i=1;i<=m;i++){
for(int j=i+1;j<=m;j++){
for(int k=j+1;k<=m;k++){
cur=0;
for(int l=1;l<=n;l++){
cur+=Math.max(Math.max(arr[l][i], arr[l][j]),arr[l][k]);
}
ans=Math.max(ans,cur);
}
}
}
System.out.println(ans);
}
}'알고리즘 리뷰' 카테고리의 다른 글
| 백준 JAVA 18312 시각 리뷰 (0) | 2024.02.17 |
|---|---|
| 백준 JAVA 2798 블랙잭 리뷰 dfs/3중for문 (0) | 2024.02.17 |
| 백준 JAVA 2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 리뷰 (0) | 2024.02.17 |
| 백준 JAVA 11725 트리의 부모 찾기 리뷰 (0) | 2024.02.17 |
| 프로그래머스 JAVA 120866 안전지대 (1) | 2024.02.16 |