3영2 2019. 4. 28. 14:23
반응형
11399번 문제 : ATM
https://www.acmicpc.net/problem/11399

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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
vector<int> v;
 
int main() 
{
    int num;
    cin >> num;
    
    for (int i = 1; i <= num; i++)
    {
        int inp;
        cin >> inp;
        v.push_back(inp);
    }
 
    sort(v.begin(), v.end());
 
    for (int i = 1; i < v.size(); i++)
    {
        v.at(i) += v.at(i - 1);    
    }
 
    int sum = 0;
    for (auto i : v)
        sum += i;
 
    cout << sum << endl;
 
 
    return 0;
}
cs



11047번 문제 : 동전0

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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
vector<int> v;
 
int main() 
{
    int num, sum;
    cin >> num >> sum;
 
    for (int i = 0; i < num; i++)
    {
        int inp;
        cin >> inp;
 
        v.push_back(inp);
    }
    
    int counter = 0;
    
    for (int i = v.size() - 1; i >= 0; i--)
    {
        while (true)
        {
            int temp = sum - v.at(i);
            if (temp >= 0)
            {
                sum -= v.at(i);
                counter++;
            }
            else
                break;
        }
        if (sum == 0)
            break;
    }
 
 
    cout << counter << endl;
 
    return 0;
}
cs




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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
vector<int> v;
 
int main()
{
    int num;
    cin >> num;
    for (int i = 0; i < num; i++)
    {
        int input;
        cin >> input;
        v.push_back(input);
    }
 
    sort(v.begin(), v.end(), greater<int>());
 
    int maxWeight = 0;
    if (v.size() >= 2)
    {
        for (int i = 0; i < v.size() - 1; i++)
        {
            int weight = 0;
            if (v.at(i) > v.at(i + 1* (2 + i))
            {
                weight = v.at(i);
            }
            else
            {
                weight = v.at(i + 1* (2 + i);
            }
 
            if (weight > maxWeight)
                maxWeight = weight;
        }
    }
    else
    {
        maxWeight = v.at(0);
    }
 
    cout << maxWeight << endl;
 
    return 0;
}
cs



4307번 문제 : 개미

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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
vector<int> result;
 
int main()
{
    int cases;
    cin >> cases;
 
    for (int i = 0; i < cases; i++)
    {
        int length, numOfAnts;
        cin >> length >> numOfAnts;
 
        vector<int> v;
 
        for (int j = 0; j < numOfAnts; j++)
        {
            int startPosition;
            cin >> startPosition;
 
            if (startPosition <= length / 2)
            {
                v.push_back(startPosition);
            }
            else
            {
                v.push_back(length - startPosition);
            
            }
        }
        
        sort(v.begin(), v.end(), greater<int>());
        
        result.push_back(v.at(0));
        result.push_back(length - v.at(v.size() - 1));
    }
 
    for (int i = 0; i < result.size(); i++)
    {
        cout << result.at(i) << " ";
        if (i % 2 == 1)
            cout << endl;
    }
    
    
    return 0;
}
cs


메모:

- 가장 늦은 시간을 구할때 개미가 충돌할 때 방향을 바꾸는 것이 그냥 지나치는 것과 결국 같다 -> 이 부분이 핵심




반응형