[BOJ] 1026_보물

ProblemSolving / / 2021. 1. 20. 01:15

보물

문제링크: https://www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

그냥 배열 A의 요소와 배열 B의 요소 곱의 합을 구하는 문제다.
최솟값을 구하려고 하기에 A의 가장 작은값과 B의 가장 큰 값을 곱해주고 더해주면 끝.

 

정답코드

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

bool upcompare(int a, int b) {
    return a < b;
}
bool downcompare(int a, int b) {
    return a > b;
}

int main() {
    int n;
    cin >> n;
    int* a = new int[n];
    int* b = new int[n];
    for (int i = 0; i < n; i++)
        cin >> a[i];
    for (int i = 0; i < n; i++)
        cin >> b[i];
    int sum = 0;

    sort(a, a + n, upcompare);
    sort(b, b + n, downcompare);

    for (int i = 0; i < n; i++)
        sum += b[i] * a[i];

    cout << sum << endl;

    return 0;
}

배열 B의 순서를 바꾸면 안된다 하면 b를 복사한 배열 temp를 만들어 그 배열을 정렬하고 a와 곱해준다.

'ProblemSolving' 카테고리의 다른 글

[BOJ] 1024_수열의 합  (0) 2021.01.22
[BOJ] 1003_피보나치 함수  (0) 2021.01.21
[BOJ] 1021_회전하는 큐  (0) 2021.01.19
[BOJ] 1015_수열정렬  (0) 2021.01.18
[BOJ] 1002_터렛  (0) 2021.01.17
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기