[ ๐—•๐—ข๐— ] 1026๋ฒˆ ๋ณด๋ฌผ - ๊ทธ๋ฆฌ๋””(Greedy) | JavaScript

NewHaยท2025๋…„ 5์›” 2์ผ
0
post-thumbnail

๐ŸŽฏ ๋ฌธ์ œ ์„ค๋ช…

๐Ÿงฉ ๋ฐฑ์ค€ 1026๋ฒˆ - ๋ณด๋ฌผ|์‹ค๋ฒ„4

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

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

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

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

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

์ž…๋ ฅ

  • ์ฒซ์งธ ์ค„: N (N โ‰ค 50)
  • ๋‘˜์งธ ์ค„: A์— ์žˆ๋Š” N๊ฐœ์˜ ์ˆ˜
  • ์…‹์งธ ์ค„: B์— ์žˆ๋Š” N๊ฐœ์˜ ์ˆ˜
    • 0 < ๊ฐ ์›์†Œ โ‰ค 100
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]
}

โŠ• ๋ง1

์‚ฌ์‹ค 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] + โ€ฆ ์ด๋ผ๋Š” ์‹๋Œ€๋กœ ํ‘ผ๊ฒŒ ์•„๋‹ˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โŠ• ๋ง2

๊ทธ๋Ÿฌ๋ฉด ๊ฒฐ๊ตญ 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์›

์ด ๋•Œ, ์ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ˆ„๊ฐ€ ๋ช‡ ์ ์ธ์ง€ ๋”ฐ๋กœ ์ •๋ฆฌํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฒˆํ˜ธ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ ์ˆ˜ ์ˆœ์œผ๋กœ ์ƒํ’ˆ์„ ์ •ํ•˜๊ณ  ์›๋ž˜ ์ˆœ์„œ์— ๋งž๊ฒŒ ๋ฐฐ๋ถ„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ ์ˆ˜๋ฒˆํ˜ธ์ƒํ’ˆ
804๋ฒˆ10,000์›
602๋ฒˆ5,000์›
401๋ฒˆ3,000์›
203๋ฒˆ1,000์›

์ด๋ ‡๊ฒŒ์š”.

๋ฒˆํ˜ธ์ ์ˆ˜์ƒํ’ˆ
1๋ฒˆ403,000์›
2๋ฒˆ605,000์›
3๋ฒˆ201,000์›
4๋ฒˆ8010,000์›

ํšŒ๊ณ 

์‚ฌ์‹ค, ์ตœ์ ์˜ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์„œ ํ‘ผ๋‹ค๊ณ  ํ‘ผ๊ฑด๋ฐ ๊ทธ๋ฆฌ๋””๋ฅผ ์ƒ๊ฐํ•˜๋ฉด์„œ ํ’€์ง€๋Š” ์•Š์•„์„œ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๊ทธ๋ฆฌ๋””๋ผ๋Š” ์ด๋ก ์€ ์•Œ๊ฒ ๋Š” ๋ฐ ๋ฌธ์ œํ’€์ด์—๋Š” ์จ๋จน์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ๋ถ„์ด๋‹ค.

profile
๋ฐฑ ๋ฒˆ์„ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€๋Š” ์•ˆ๋‹ค ๐Ÿ‘€

0๊ฐœ์˜ ๋Œ“๊ธ€