본문 바로가기
알고리즘

백준 s4 1026 보물 c++

by kyj0032 2024. 1. 25.

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

 

1026번: 보물

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

www.acmicpc.net

 

풀이

A, B 두 배열을 곱해서 구할 수 있는 최솟값은

B의 가장 큰 수에 A의 가장 작은 수를 곱하는 것이다.

 

B는 재배열하면 안 된다고 했지만 A의 순서를 마음대로 바꿀 수 있기 때문에 사실상 상관 없음

 

A, B 둘다 정렬해준 후 가장 큰 수*가장 작은 수 끼리 곱해주면 된다.

 

전체 코드

/*boj g4 1920 수 찾기*/
#include <algorithm>
#include <iostream>
#define MAXN 55
using namespace std;

int N;
int A[MAXN];
int B[MAXN];

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> N;
    for (int i = 0; i < N; i++)
        cin >> A[i];
    for (int j = 0; j < N; j++)
        cin >> B[j];

    sort(A, A + N, greater<>());
    sort(B, B + N);

    int sum = 0;
    for (int i = 0; i < N; i++) {
        sum += A[i] * B[i];
    }

    cout << sum << "\n";
}

'알고리즘' 카테고리의 다른 글

백준 s2 1541 잃어버린 괄호 c++  (0) 2024.01.25
백준 s4 11399 ATM c++  (0) 2024.01.25
백준 s4 2217 로프 c++  (0) 2024.01.25
백준 p5 19235 모노미노도미노 c++  (0) 2024.01.24
백준 g2 20061 모노미노도미노 2 c++  (0) 2024.01.23