
์๋ ์์ ์ ์ํ์ด ํญ์ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ์๋ ๋๋ผ๊ฐ ์์๋ค. ์ด ๋๋ผ์ ๊ตญ์ ๊น์ง๋ฏผ์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ด๊ณ ํฐ ์๊ธ์ ๊ฑธ์๋ค.
๊ธธ์ด๊ฐ N์ธ ์ ์ ๋ฐฐ์ด A์ B๊ฐ ์๋ค. ๋ค์๊ณผ ๊ฐ์ด ํจ์ S๋ฅผ ์ ์ํ์.
S = A[0] ร B[0] + ... + A[N-1] ร B[N-1]
S์ ๊ฐ์ ๊ฐ์ฅ ์๊ฒ ๋ง๋ค๊ธฐ ์ํด A์ ์๋ฅผ ์ฌ๋ฐฐ์ดํ์. ๋จ, B์ ์๋ ์๋ ์ฌ๋ฐฐ์ดํ๋ฉด ์ ๋๋ค.
S์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
5
1 1 1 6 0
2 7 8 3 1
S์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
18
A[i] * B[i] ์ ์ดํฉ์ ์ต์๋ก ๋ง๋ค๊ธฐ ์ํด์, B์ ๊ฐ์ด ํด ์๋ก A์ ์์ ๊ฐ์ด ๊ณฑํด์ ธ์ผ ํฉ๋๋ค. (์ด ๋ถ๋ถ์ด ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ๋งค ์๊ฐ A์ ๊ฐ์ฅ ์์ ๊ฐ์ B์ ๊ฐ์ฅ ํฐ ๊ฐ ์์น์ ๋ฐฐ์นํ๋ ๊ฒ๋๋ค.)
A๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก, B๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ํ์ฌ ์์๋๋ก ๊ณฑํ๋ฉด ์ฝ๊ฒ ์ง๋ง, ๋ฌธ์ ์์๋ B๋ฐฐ์ด์ ์์๋ ๋ฐ๊ฟ ์ ์๋ค๊ณ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฌ ๋์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ์ฌ๋ฐฐ์น ํฉ๋๋ค.
์ฐ์ , A๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
const arrA = input[1].split(' ').map(Number).sort((a, b) => a - b);
๊ทธ ๋ค์, B๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ํจ๊ป ์ ์ฅํ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
const arrB = input[2].split(' ').map(Number);
const indexB = arrB.map((val, idx) => ({val, idx})).sort((a, b) => b.val - a.val);
์ด๋ ๊ฒ ํ๋ฉด indexB๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ์๊ฒผ์ต๋๋ค.
const indexB = [
{val: 8, idx: 2},
{val: 7, idx: 1},
{val: 3, idx: 3},
{val: 2, idx: 0},
{val: 1, idx: 4}
]
์ด ๋ฐฐ์ด์ idx ๊ฐ์ ๊ฐ์ง๊ณ arrA ๋ฐฐ์ด์ ์ ๋ ฌํฉ๋๋ค.
const newA = [];
for (let i = 0; i < N; i++) {
newA[indexB[i].idx] = arrA[i];
}
์๋ก ์ ๋ ฌํ newA์ arrB ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์ต์๊ฐ S๋ฅผ ๊ตฌํฉ๋๋ค.
let sum = 0;
for(let i = 0; i < N; i++){
sum += newA[i] * arrB[i]
}
์ฌ์ค indexB๋ฅผ ๊ตฌํ ์๊ฐ, ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ๋ฐ๋ก sum์ ๊ตฌํ ์๋ ์์ต๋๋ค. (์ด๋ ๊ฒ ํด๋ ํต๊ณผ๋ฉ๋๋ค.)
let sum = 0;
for (let i = 0; i < N; i++) {
sum += arrA[i] * indexB[i].val;
}
ํ์ง๋ง, ์ด ๋ฐฉ์์ B๋ฐฐ์ด์ ์ ๋ ฌ๋ ๊ทธ๋๋ก ๊ณฑํ๋ ๋ฐฉ์์ด๋ฏ๋ก ๋ฌธ์ ์ ํต์ฌ์ โB์ ์์๋ฅผ ๋ฐ๊พธ์ง ์๊ณ โ์ ์ด๊ธ๋๊ฒ ๋ฉ๋๋ค. ์ฆ, S = A[i] * B[i] + โฆ ์ด๋ผ๋ ์๋๋ก ํผ๊ฒ ์๋๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ตญ indexB๋ B๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ ๊ฒ๊ณผ ๋๊ฐ๊ณ , ์ด๊ฑธ ์ฌ์ฉํ์ผ๋ฉด ์ ๋ ฌํ ๊ฒ ์๋๊ฐ๋ผ๋ ์๋ฌธ์ด ๋ญ๋๋ค. indexB๋ B๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ๊ฒ์ ๋ง์ง๋ง B๋ฐฐ์ด์ ์ ๋ ฌํ ๊ฒ์ ์๋๋๋ค.
๋ฌธ์ ์์ ๊ธ์งํ๋ ๊ฒ์ B์์ฒด๋ฅผ ๋ณ๊ฒฝํด์ A[i] * B[i] ๋ฅผ ์๋ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํฉ๋๋ค. ๋ง1์ ๋ฐฉ์์ฒ๋ผ์.
indexB๋ B์ ๋ณต์ฌ๋ณธ์ ์ ๋ ฌํ ๊ฒ์ด๊ณ , ์ด์ ๋ง๊ฒ A๋ฅผ ์ฌ์ ๋ ฌํด A[i] * B[i]๋ฅผ ๋ง์ท๋ค๋ฉด ๋ฌธ์ ์กฐ๊ฑด์ ์๋ฐํ์ง ์์ต๋๋ค.
์ฌ์ด ์๋ฅผ ๋ค์๋ฉด, ํ์๋ค์๊ฒ๋ ๊ฐ์ ๋ฐ์์ ๋ฒํธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์๋ค์๊ฒ ์ ์์ ๋ฐ๋ผ ์ํ์ ๋ฐฐ์ ํ๋ค๊ณ ํ์ ๋๋ฅผ ๊ฐ์ ํด๋ด ์๋ค. ํ์๋ค์ ๋ฒํธ๋ ๋ฐ๊ฟ ์ ์๊ณ , ์ ์ ์์ผ๋ก ์ํ์ ์ ํ ๋ค, ๋ฒํธ๋๋ก ๋ฐฐ๋ถํด์ผ ํฉ๋๋ค.(๋ณดํต ์ ์๋๋ค์ โ1๋ฒ ๊น์ฒ ์~, 2๋ฒ ์ด์ํฌ~โ ์ด๋ ๊ฒ ๋ฒํธ ์์ผ๋ก ํธ๋ช ํ์ฌ ๋๋์ด์ค๋๋ค.)
| ๋ฒํธ | ํ์ | ์ ์ |
|---|---|---|
| 1๋ฒ | ๊น์ฒ ์ | 40 |
| 2๋ฒ | ์ด์ํฌ | 60 |
| 3๋ฒ | ์ ์งฑ๊ตฌ | 20 |
| 4๋ฒ | ๊น๋์ผ | 80 |
| ๋ฑ์ | ์ํ |
|---|---|
| 1๋ฑ | 10,000์ |
| 2๋ฑ | 5,000์ |
| 3๋ฑ | 3,000์ |
| 4๋ฑ | 1,000์ |
์ด ๋, ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๊ฐ ๋ช ์ ์ธ์ง ๋ฐ๋ก ์ ๋ฆฌํ๋ค๊ณ ํด์ ๋ฒํธ๊ฐ ๋ฐ๋์ง ์์ต๋๋ค. ์ ์ ์์ผ๋ก ์ํ์ ์ ํ๊ณ ์๋ ์์์ ๋ง๊ฒ ๋ฐฐ๋ถํ๋ฉด ๋ฉ๋๋ค.
| ์ ์ | ๋ฒํธ | ์ํ |
|---|---|---|
| 80 | 4๋ฒ | 10,000์ |
| 60 | 2๋ฒ | 5,000์ |
| 40 | 1๋ฒ | 3,000์ |
| 20 | 3๋ฒ | 1,000์ |
์ด๋ ๊ฒ์.
| ๋ฒํธ | ์ ์ | ์ํ |
|---|---|---|
| 1๋ฒ | 40 | 3,000์ |
| 2๋ฒ | 60 | 5,000์ |
| 3๋ฒ | 20 | 1,000์ |
| 4๋ฒ | 80 | 10,000์ |
์ฌ์ค, ์ต์ ์ ๋ฐฉ๋ฒ์ ์ฐพ์์ ํผ๋ค๊ณ ํผ๊ฑด๋ฐ ๊ทธ๋ฆฌ๋๋ฅผ ์๊ฐํ๋ฉด์ ํ์ง๋ ์์์ ์ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ทธ๋ฆฌ๋๋ผ๋ ์ด๋ก ์ ์๊ฒ ๋ ๋ฐ ๋ฌธ์ ํ์ด์๋ ์จ๋จน์ง ๋ชปํ๊ณ ์๋ ๊ธฐ๋ถ์ด๋ค.