728x90
문제
접근방법
1. 처음에 힘, 민첩, 지능을 0 0 0부터 시작하려고했지만 시간초과가 발생할 것이라 생각하였습니다.
2. 다시 생각해보니 진수의 스탯을 병사의 스탯을 조합해서 미리 결정해둡니다.
3. 모든 병사를 돌며, 미리 결정한 힘, 민첩, 지능 모두 병사보다 이상인 것의 횟수를 세고 횟수가 K 이상이면 그 조합의 최소값으로 갱신하면 됩니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int N,K;
private static int[][] arr;
private static int max = Integer.MAX_VALUE;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
arr = new int[N][3];
for(int i = 0 ; i < N ; i++){
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
arr[i][2] = Integer.parseInt(st.nextToken());
}
}
//실행
public static void process() {
for(int i = 0 ; i < N ; i++){
for(int j = 0 ; j < N ; j++){
for(int k = 0 ; k < N ; k++){
int count = 0;
for(int l = 0 ; l < N ; l++){
if(arr[i][0] >=arr[l][0] && arr[j][1] >= arr[l][1] && arr[k][2]>= arr[l][2]){
count++;
}
}
if(count>=K){
max = Math.min(max,arr[i][0]+arr[j][1]+arr[k][2]);
}
}
}
}
System.out.println(max);
}
public static void main(String[] args) throws Exception {
input();
process();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 14232번 : 보석 도둑 (0) | 2024.04.18 |
---|---|
[Java] 백준 1874번 : 스택 수열 (0) | 2024.04.16 |
[Java] 백준 5883번 : 아이폰 9S (0) | 2024.04.16 |
[Java] 백준 2304번 : 창고 다각형 (0) | 2024.04.16 |
[Java] 백준 1676번 : 팩토리얼 0의 개수 (0) | 2024.04.15 |