[BOJ] 1026

보물

1026번 https://www.acmicpc.net/problem/1026

분류

  • Silver 4

  • 수학
  • 정렬

해법

첫 번째 배열은 오름차순으로,
두 번째 배열은 내림차순으로 정렬한 뒤
모두 곱해주면 됩니다.

정답 코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;

int main(void)
{
    int N;
    int S = 0;
    scanf(" %d", &N);
    vector<int> v1;
    vector<int> v2;
    for (int i = 0; i < N; i++)
    {
        int num;
        scanf(" %d", &num);
        v1.push_back(num);
    }
    for (int i = 0; i < N; i++)
    {
        int num;
        scanf(" %d", &num);
        v2.push_back(num);
    }
    // sort v1 ascending order
    sort(v1.begin(), v1.end());
    // sort v2 descending order
    sort(v2.begin(), v2.end(), greater<int>());
    // multiply all values in the vector v1 and v2
    for (int i = 0; i < N; i++)
        S += (v1[i] * v2[i]);
    printf("%d", S);
    return 0;
}

Updated:

Leave a comment