๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 1026๋ฒˆ: ๋ณด๋ฌผ

by nitronium102 2022. 6. 26.

๋ฌธ์ œ

์˜›๋‚  ์˜›์ ์— ์ˆ˜ํ•™์ด ํ•ญ์ƒ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ์˜€๋˜ ๋‚˜๋ผ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๋‚˜๋ผ์˜ ๊ตญ์™• ๊น€์ง€๋ฏผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‚ด๊ณ  ํฐ ์ƒ๊ธˆ์„ ๊ฑธ์—ˆ๋‹ค.

๊ธธ์ด๊ฐ€ N์ธ ์ •์ˆ˜ ๋ฐฐ์—ด A์™€ B๊ฐ€ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•จ์ˆ˜ S๋ฅผ ์ •์˜ํ•˜์ž.

S = A[0] × B[0] + ... + A[N-1] × B[N-1]

S์˜ ๊ฐ’์„ ๊ฐ€์žฅ ์ž‘๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด A์˜ ์ˆ˜๋ฅผ ์žฌ๋ฐฐ์—ดํ•˜์ž. ๋‹จ, B์— ์žˆ๋Š” ์ˆ˜๋Š” ์žฌ๋ฐฐ์—ดํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

S์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” A์— ์žˆ๋Š” N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง€๊ณ , ์…‹์งธ ์ค„์—๋Š” B์— ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , A์™€ B์˜ ๊ฐ ์›์†Œ๋Š” 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— S์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

B๋ฅผ ์žฌ๋ฐฐ์—ดํ•˜์ง€ ๋ง๋ผ๊ณ ๋Š” ํ–ˆ์ง€๋งŒ...์–ด์ฐจํ”ผ A๋ฅผ ์žฌ๋ฐฐ์—ดํ•˜๋ฉด ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง„๋‹ค

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋‘˜ ๋‹ค ์žฌ๋ฐฐ์—ดํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ’€์—ˆ๋‹ค.

์ตœ์†Ÿ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ํ•œ ๋ฐฐ์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ, ํ•œ ๋ฐฐ์—ด์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•˜๋ฉด ๋œ๋‹ค.

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

int main(){
    int n;
    // ์ž…๋ ฅ
    cin >> n;

    vector<int> A(n);
    vector<int> B(n);

    for (int i=0; i<n; i++)
        cin >> A[i];

    for (int i=0; i<n; i++)
        cin >> B[i];

    // S์˜ ์ตœ์†Ÿ๊ฐ’ : A์˜ ์ตœ์†Ÿ๊ฐ’ * B์˜ ์ตœ์†Ÿ๊ฐ’ + A์˜ ๋‘ ๋ฒˆ์งธ ์ตœ์†Ÿ๊ฐ’ * B์˜ ๋‘ ๋ฒˆ์งธ ์ตœ์†Ÿ๊ฐ’ + ...
    // ์ตœ์†Ÿ๊ฐ’ ๊ณ„์‚ฐ : ํ•œ ๋ฐฐ์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ, ํ•œ ๋ฐฐ์—ด์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•ด์•ผ ํ•จ
    sort(A.begin(), A.end());
    sort(B.begin(), B.end(), greater<>());

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

    // ์ถœ๋ ฅ
    cout << sum;
}

๋Œ“๊ธ€