본문 바로가기
Computer Science

영빈이의 대량할인

by OKOK 2019. 2. 19.

1. 영빈이의 대량 할인

2. 머지 소트 꿀이네?

3. 이거 풀이하는 것

4. 머지 말고도 쉽게  풀이하는 방법이 존재함

5. 오케이 


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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
#define N_MAX 10
int temp[N_MAX];
int buff[N_MAX] = { 0, };
 
void merge(int array[], int left, int mid, int right)
{
    int i, j, k, m, l;
    i = left;
    j = mid + 1;
    k = left;
    while (i <= mid && j <= right) {
        if (array[i] > array[j]) {
            temp[k++= array[i++];
        }
        else {
            temp[k++= array[j++];
        }
    }
    while (i <= mid) {
        temp[k++= array[i++];
    }
    while (j <= right) {
        temp[k++= array[j++];
    }
    for (m = left; m <= right; m++) {
        array[m] = temp[m];
    }
}
 
void merge_sort(int array[], int left, int right)
{
    int mid;
    if (left < right) {
        mid = (left+right) / 2;
        merge_sort(array, left, mid);
        merge_sort(array, mid + 1, right);
        merge(array, left, mid, right);
    }
 
}
 
int main()
{
    freopen("input.txt""r", stdin);
    int T;
    scanf("%d\n"&T);
 
 
    for (int t = 0; t < T; t++)
    {
        int N;
        int sum = 0;
        int max = 0;
        int cnt = 0;
        scanf("%d\n"&N);
 
        for (int i = 0; i < N; i++) {
            int n;
            scanf("%d"&n);
            if (n > max) max = n;
            buff[n]++;
        }
/*
        merge_sort(buff, 0, N - 1);
        for (int i = 0; i < N; i++) {
            if ((i % 3) != 2)
                sum += buff[i];
        }
*/
        for (int k = max; k > 0; k--// 큰 수부터 하나씩 묶음
        {
            while (buff[k] > 0)
            {
                if ((cnt % 3!= 2) { // 이전에 묶은 것이 2개 이면,
                    sum += k;
                }
                buff[k]--;
                cnt++;
            }
        }
        printf("%d\n", sum);
    }
    return 0;
}
cs

 


'Computer Science' 카테고리의 다른 글

승률 비교하기  (0) 2019.02.19
영준이의 카드 카운팅  (0) 2019.02.19
무선 단속 카메라  (0) 2019.02.19
제곱수의 합 계산하기  (0) 2019.02.18
빠른 휴대전화 키패드  (0) 2019.02.18

댓글