반응형

1. 가장 처음 시작하는 시간과 가장 마지막에 끝나는 시간을 저장한다.

2. 그 시간동안 몇명이 들어와있는지 배열에 카운트 한다.

3. 개장 시작부터 마감시간 까지 파악하여 1일 경우 x1을  2일경우 x2를 3일경우 x3을 하여 더한다.


아래 사진은 카운트 예시이다.


arr[1] 은 트럭 한대 이기 때문에 +1이 arr[2]는 두대가 들어왔기 때문에 +2 arr[3]은 트럭 3대가 들어왔기 때문에 +3 의 값을 갖고 있다.

Switch 문을 통해 1,2,3을 구별하여 계산하면 된다. 아 끝~


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
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Scanner;
 
class Main {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
 
        int A = sc.nextInt();
        int B = sc.nextInt();
        int C = sc.nextInt();
        int[] arr = new int[100];
        int start, end, max = 0;
        int min = 0;
        int sum = 0;
        for (int i = 0; i < 3; i++) {
            start = sc.nextInt();
            end = sc.nextInt();
            min = Math.min(min, start); //가장 빨리 시작하는 시간
            max = Math.max(max, end); //가장 늦게 끝나는 시간
            
            //트럭 한대의 start ~ end 시간동안 배열을 +1 해준다. 
            for (int j = start; j < end; j++) {
                arr[j]++;
            }
        }
        // 가장 처음 들어온 시간 부터 가장 마지막 시간 까지 계산을 한다.
        for (int i = min; i < max; i++) {
            switch (arr[i]) {
            case 1:
                sum = sum + A*arr[i];
                break;
            case 2:
                sum = sum + B*arr[i];
                break;
            case 3:
                sum = sum + C*arr[i];
                break;
            }
        }
        System.out.println(sum);
    }
 
}
cs


반응형

+ Recent posts