# [Algorithm/JS] ๋ฐฑ์ค€ 1026๋ฒˆ ๋ณด๋ฌผ

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ (opens new window)

# Question

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

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

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

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

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

# Input

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

# Output

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

# Example

# Input 1

5
1 1 1 6 0
2 7 8 3 1
1
2
3

# Output 1

18
1

# Input 2

3
1 1 3
10 30 20
1
2
3

# Output 2

80
1

# Solution

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
let [N, A, B] = fs.readFileSync(filePath).toString().trim().split('\n');

let sum = 0;
N = Number(N);
A = A.split(' ')
  .map(Number)
  .sort((a, b) => a - b);
B = B.split(' ')
  .map(Number)
  .sort((a, b) => b - a);

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

console.log(sum);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

์•Œ๊ณ ๋ฆฌ์ฆ˜: ๊ทธ๋ฆฌ๋””

๋ฐฐ์—ด A ์™€ ๋ฐฐ์—ด B์˜ ๊ฐ ์ธ๋ฑ์Šค๋ฅผ ๊ณฑํ•  ๋•Œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ •๋ ฌํ•ด์ค€๋‹ค.

ํ•œ ๋ฐฐ์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ, ํ•œ ๋ฐฐ์—ด์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ๋ฉด ๊ณฑํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ •๋ ฌ ํ›„ ๊ฐ ์ธ๋ฑ์Šค ๊ฐ’์˜ ๊ณฑ์„ ์˜ ์ด ํ•ฉ์„ sum ๋ณ€์ˆ˜์— ๋Œ€์ž… ์—ฐ์‚ฐ์ž(+=)๋ฅผ ์‚ฌ์šฉํ•ด ์ €์žฅํ–ˆ๋‹ค.

Last Updated: 2022. 6. 5. ์˜คํ›„ 3:42:39