응애개발자
article thumbnail
728x90

문제

 

14718번: 용감한 용사 진수

N명의 적 병사가 있다. 적의 각 병사는 힘, 민첩, 지능의 3가지 능력치를 가진다. 용감한 용사 진수도 힘, 민첩, 지능의 3가지 능력치를 가진다. 적의 각 병사에 대해, 적 병사가 가진 힘보다 진수

www.acmicpc.net


접근방법

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();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!