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

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

by nitronium102 2021. 9. 6.

๋ฌธ์ œ

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

๊ธธ์ด๊ฐ€ 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์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

๋‘ ๊ฐ€์ง€ ํ’€์ด๊ฐ€ ์žˆ๋‹ค. 

01. ๋ฌธ์ œ์˜ ์กฐ๊ฑด(B ์žฌ๋ฐฐ์—ด X)์„ ๋งŒ์กฑํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ํšจ์œจ์ ์ธ ํ’€์ด

02. ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€๋งŒ ๋น„ํšจ์œจ์ ์ธ ํ’€์ด

๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ์†Œ๊ฐœํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค!

 

// 01. ๋ฌธ์ œ ์˜๋ฏธ(B ์žฌ๋ฐฐ์—ด x)์™€๋Š” ๋‹ค๋ฅด๋‚˜ ์‹ค์ œ๋กœ๋Š” ํšจ๊ณผ์ ์ธ ํ’€์ด
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> a;
vector<int> b;

int solution(int n){
  int sum = 0;
  sort(a.begin(), a.end());
  sort(b.begin(), b.end(), greater<>());
  for (int i=0; i<n; i++){
    sum += a[i]*b[i];
  }
  return sum;
}

 

// 02. B๋ฅผ ์žฌ๋ฐฐ์—ดํ•˜์ง€ ์•Š๋Š” ํ’€์ด
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> a;
vector<int> b;

int solution(int n){
  int sum = 0, idx = -1;
  sort(a.begin(), a.end());
  for (int i=0; i<n; i++){
    int max = -1;
    for (int j=0; j<n-i; j++){
      if (max < b[j]){
        max = b[j];
        idx = j;
      }
    }
    sum += a[i]*max;
    b.erase(b.begin()+idx);
  }

  return sum;
}

 

// ๋ฉ”์ธ ํ•จ์ˆ˜
int main(){
  int n;
  cin >> n;

  a.assign(n, 0);
  b.assign(n, 0);
  for (int i=0; i<n; i++){
    cin >> a[i];
  }
  
  for (int i=0; i<n; i++){
    cin >> b[i];
  }

  cout << solution(n);
}

๋Œ“๊ธ€