반응형

그리디....


단순한 문제인거 같다.

수가 작기 때문에 메모리초과나 시간초과등에 신경을 안써도 된다. 아무렇게나 구현해도 된다.


풀이

1. 6개짜리 팩과 낱개를 각각 배열에 저장한다.

2. 팩, 낱개 배열을 정렬한다. (가장 적은 비용이 먼저 오도록)

3. 비교한다.

 - 가장 싼 6개짜리 팩으로 모두 살 것인지

 - 가장 싼 낱개로 모두 살 것인지

 - 가장싼 6개짜리 팩과 가장 싼 낱개를 이용해서 살 것인지


소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;
import java.util.Arrays;
 
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        Scanner sc = new Scanner(System.in);
        
        int N = sc.nextInt();
        int M =sc.nextInt();
        int Min = Integer.MAX_VALUE;
 
        int[] unit = new int[M];
        int[] pack = new int[M];
        for(int i=0; i<M; i++){
            pack[i] = sc.nextInt();
            unit[i] = sc.nextInt();
        }
        Arrays.sort(unit);
        Arrays.sort(pack);
        
        //가장 싼 6개짜리 팩 구매 vs 가장 싼 낱개 구매 vs (가장싼 6개짜리 팩 + 낱개)
        Min = Math.min(((N/6)+1)*pack[0], N*unit[0]);    
        Min = Math.min(Min, ((N/6))*pack[0+ (N%6)*unit[0]);
        
        System.out.println(Min);
    }
}
cs


반응형

+ Recent posts