ํ•ด๋‹น ํ’€์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Jang Sungil๋‹˜์˜ ํ’€์ด๋ฒ•์„ ํ•ด์„ํ•˜์—ฌ ์ œ์ž‘๋˜์—ˆ์Œ์„ ๋ฐํž™๋‹ˆ๋‹ค.

๐Ÿงก๋ฌธ์ œ์„ค๋ช…

๋‹น์‹ ์€ ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ n๊ฐœ์˜ ์ง‘์— ํƒ๋ฐฐ๋ฅผ ๋ฐฐ๋‹ฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ๋‹ฌํ•  ๋ฌผ๊ฑด์€ ๋ชจ๋‘ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์— ๋‹ด์•„ ๋ฐฐ๋‹ฌํ•˜๋ฉฐ, ๋ฐฐ๋‹ฌ์„ ๋‹ค๋‹ˆ๋ฉด์„œ ๋นˆ ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž๋“ค์„ ์ˆ˜๊ฑฐํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ๋‹ฌํ•  ํƒ๋ฐฐ๋“ค์€ ๋ชจ๋‘ ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์— ๋‹ด๊ฒจ์„œ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์— ๋ณด๊ด€๋˜์–ด ์žˆ๊ณ , i๋ฒˆ์งธ ์ง‘์€ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ ๊ฑฐ๋ฆฌ i๋งŒํผ ๋–จ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ i๋ฒˆ์งธ ์ง‘์€ j๋ฒˆ์งธ ์ง‘๊ณผ ๊ฑฐ๋ฆฌ j - i๋งŒํผ ๋–จ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. (1 โ‰ค i โ‰ค j โ‰ค n)
ํŠธ๋Ÿญ์—๋Š” ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ์ตœ๋Œ€ cap๊ฐœ ์‹ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋Ÿญ์€ ๋ฐฐ๋‹ฌํ•  ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž๋“ค์„ ์‹ค์–ด ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ ์ถœ๋ฐœํ•ด ๊ฐ ์ง‘์— ๋ฐฐ๋‹ฌํ•˜๋ฉด์„œ, ๋นˆ ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž๋“ค์„ ์ˆ˜๊ฑฐํ•ด ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์— ๋‚ด๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ ์ง‘๋งˆ๋‹ค ๋ฐฐ๋‹ฌํ•  ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์˜ ๊ฐœ์ˆ˜์™€ ์ˆ˜๊ฑฐํ•  ๋นˆ ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ, ํŠธ๋Ÿญ ํ•˜๋‚˜๋กœ ๋ชจ๋“  ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์น˜๊ณ  ๋ฌผ๋ฅ˜์ฐฝ๊ณ ๊นŒ์ง€ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ง‘์— ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐํ•  ๋•Œ, ์›ํ•˜๋Š” ๊ฐœ์ˆ˜๋งŒํผ ํƒ๋ฐฐ๋ฅผ ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ cap=4 ์ผ ๋•Œ, ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋กœ ์ด๋™ํ•˜๋ฉด์„œ 5๊ฐœ์˜ ์ง‘์— ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐํ•˜๋Š” ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐํ•  ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž ๊ฐœ์ˆ˜

ใ€€์ง‘ #1์ง‘ #2์ง‘ #3์ง‘ #4์ง‘ #5
๋ฐฐ๋‹ฌ1๊ฐœ0๊ฐœ3๊ฐœ1๊ฐœ2๊ฐœ
์ˆ˜๊ฑฐ0๊ฐœ3๊ฐœ0๊ฐœ4๊ฐœ0๊ฐœ

๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ ๊ณผ์ •

ใ€€์ง‘ #1์ง‘ #2์ง‘ #3์ง‘ #4์ง‘ #5์„ค๋ช…
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/33/01/42/0๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ ํƒ๋ฐฐ 3๊ฐœ๋ฅผ ํŠธ๋Ÿญ์— ์‹ค์–ด ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/33/00/40/0๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ 5๋ฒˆ์งธ ์ง‘๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 5) 4๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 1๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•˜๊ณ , 5๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 2๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/33/00/00/05๋ฒˆ์งธ ์ง‘์—์„œ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 5) 4๋ฒˆ์งธ ์ง‘์—์„œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž 4๊ฐœ๋ฅผ ์ˆ˜๊ฑฐํ•œ ํ›„, ์ˆ˜๊ฑฐํ•œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์— ๋‚ด๋ฆฌ๊ณ  ํƒ๋ฐฐ 4๊ฐœ๋ฅผ ํŠธ๋Ÿญ์— ์‹ฃ์Šต๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ0/00/30/00/00/0๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ 3๋ฒˆ์งธ ์ง‘๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 3) 1๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 1๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•˜๊ณ , 3๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 3๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ0/00/00/00/00/03๋ฒˆ์งธ ์ง‘์—์„œ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 3) 2๋ฒˆ์งธ ์ง‘์—์„œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž 3๊ฐœ๋ฅผ ์ˆ˜๊ฑฐํ•œ ํ›„, ์ˆ˜๊ฑฐํ•œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์— ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.

16(=5+5+3+3)์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ด๋™ํ•˜๋ฉด์„œ ๋ชจ๋“  ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๊ฑฐ๋ฆฌ๋กœ ๋ชจ๋“  ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์น˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ์ด๋ณด๋‹ค ์งง์€ ๊ฑฐ๋ฆฌ๋กœ ๋ชจ๋“  ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์น˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.

ํŠธ๋Ÿญ์— ์‹ค์„ ์ˆ˜ ์žˆ๋Š” ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ cap, ๋ฐฐ๋‹ฌํ•  ์ง‘์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ n, ๊ฐ ์ง‘์— ๋ฐฐ๋‹ฌํ•  ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด deliveries์™€ ๊ฐ ์ง‘์—์„œ ์ˆ˜๊ฑฐํ•  ๋นˆ ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด pickups๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ, ํŠธ๋Ÿญ ํ•˜๋‚˜๋กœ ๋ชจ๋“  ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์น˜๊ณ  ๋ฌผ๋ฅ˜์ฐฝ๊ณ ๊นŒ์ง€ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.


๐Ÿ’›์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ค cap โ‰ค 50
  • 1 โ‰ค n โ‰ค 100,000
  • deliveries์˜ ๊ธธ์ด = pickups์˜ ๊ธธ์ด = n
    • deliveries[i]๋Š” i+1๋ฒˆ์งธ ์ง‘์— ๋ฐฐ๋‹ฌํ•  ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • pickups[i]๋Š” i+1๋ฒˆ์งธ ์ง‘์—์„œ ์ˆ˜๊ฑฐํ•  ๋นˆ ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • 0 โ‰ค deliveries์˜ ์›์†Œ โ‰ค 50
    • 0 โ‰ค pickups์˜ ์›์†Œ โ‰ค 50
  • ํŠธ๋Ÿญ์˜ ์ดˆ๊ธฐ ์œ„์น˜๋Š” ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์ž…๋‹ˆ๋‹ค.

๐Ÿ’š์ž…์ถœ๋ ฅ ์˜ˆ

capndeliveriespickupsresult
45[1, 0, 3, 1, 2][0, 3, 0, 4, 0]16
27[1, 0, 2, 0, 1, 0, 2][0, 2, 0, 1, 0, 2, 0]30

๐Ÿ’™์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐํ•  ์žฌํ™œ์šฉ ํƒ๋ฐฐ ์ƒ์ž ๊ฐœ์ˆ˜

ใ€€์ง‘ #1์ง‘ #2์ง‘ #3์ง‘ #4์ง‘ #5์ง‘ #6์ง‘ #7
๋ฐฐ๋‹ฌ1๊ฐœ0๊ฐœ2๊ฐœ0๊ฐœ1๊ฐœ0๊ฐœ2๊ฐœ
์ˆ˜๊ฑฐ0๊ฐœ2๊ฐœ0๊ฐœ1๊ฐœ0๊ฐœ2๊ฐœ0๊ฐœ

๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ ๊ณผ์ •

ใ€€์ง‘ #1์ง‘ #2์ง‘ #3์ง‘ #4์ง‘ #5์ง‘ #6์ง‘ #7์„ค๋ช…
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/22/00/11/00/22/0๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ ํƒ๋ฐฐ 2๊ฐœ๋ฅผ ํŠธ๋Ÿญ์— ์‹ค์–ด ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/22/00/11/00/20/0๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ 7๋ฒˆ์งธ ์ง‘๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 7) 7๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 2๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/22/00/11/00/00/07๋ฒˆ์งธ ์ง‘์—์„œ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 7) 6๋ฒˆ์งธ ์ง‘์—์„œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž 2๊ฐœ๋ฅผ ์ˆ˜๊ฑฐํ•œ ํ›„, ์ˆ˜๊ฑฐํ•œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์— ๋‚ด๋ฆฌ๊ณ  ํƒ๋ฐฐ 2๊ฐœ๋ฅผ ํŠธ๋Ÿญ์— ์‹ฃ์Šต๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/21/00/10/00/00/0๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ 5๋ฒˆ์งธ ์ง‘๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 5) 3๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 1๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•˜๊ณ , 5๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 1๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ1/00/11/00/00/00/00/05๋ฒˆ์งธ ์ง‘์—์„œ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 5) 4๋ฒˆ์งธ ์ง‘์—์„œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž 1๊ฐœ๋ฅผ ์ˆ˜๊ฑฐํ•˜๊ณ  2๋ฒˆ์งธ ์ง‘์—์„œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž 1๊ฐœ๋ฅผ ์ˆ˜๊ฑฐํ•œ ํ›„, ์ˆ˜๊ฑฐํ•œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์— ๋‚ด๋ฆฌ๊ณ  ํƒ๋ฐฐ 2๊ฐœ๋ฅผ ํŠธ๋Ÿญ์— ์‹ฃ์Šต๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ0/00/10/00/00/00/00/0๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ 3๋ฒˆ์งธ ์ง‘๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 3) 1๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 1๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•˜๊ณ , 3๋ฒˆ์งธ ์ง‘์— ํƒ๋ฐฐ 1๊ฐœ๋ฅผ ๋ฐฐ๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚จ์€ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ0/00/00/00/00/00/00/03๋ฒˆ์งธ ์ง‘์—์„œ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ(๊ฑฐ๋ฆฌ 3) 2๋ฒˆ์งธ ์ง‘์—์„œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž 1๊ฐœ๋ฅผ ์ˆ˜๊ฑฐํ•œ ํ›„, ์ˆ˜๊ฑฐํ•œ ๋นˆ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์— ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.

30(=7+7+5+5+3+3)์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ด๋™ํ•˜๋ฉด์„œ ๋ชจ๋“  ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๊ฑฐ๋ฆฌ๋กœ ๋ชจ๋“  ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์น˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ์ด๋ณด๋‹ค ์งง์€ ๊ฑฐ๋ฆฌ๋กœ ๋ชจ๋“  ๋ฐฐ๋‹ฌ ๋ฐ ์ˆ˜๊ฑฐ๋ฅผ ๋งˆ์น˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ, 30์„ return ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ’œ๋‚˜์˜ ํ’€์ด

function solution(cap, n, deliveries, pickups) {
    // ๋‹ต์•ˆ ๋ณ€์ˆ˜
    let result = 0
    // ๋ฐฐ๋‹ฌ ๊ฑฐ๋ฆฌ, ํšŒ์ˆ˜ ๊ฑฐ๋ฆฌ ์นด์šดํŠธ ๋ณ€์ˆ˜
    const eachDist = [0, 0]
    // ๋ฐฐ๋‹ฌ ์ธ๋ฑ์Šค, ํšŒ์ˆ˜ ์ธ๋ฑ์Šค
    // ํ•ญ์ƒ ๊ฐ€์žฅ ๋งจ ๋’ค์—์„œ ์ถœ๋ฐœํ•จ (n-1)
    let dIdx = n-1
    let pIdx = n-1
    // ๋ฐฐ๋‹ฌ, ํšŒ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋œ ์ธ๋ฑ์Šค ๋ฐฐ์—ด
    const de_end = []
    const pick_end = []
    // ๋ฐฐ๋‹ฌํ•  ๊ณณ์ด ๋‚จ์•„์žˆ๋Š” ๋™์•ˆ ๋ฐ˜๋ณต
    while(dIdx > -1) {
        // ํ˜„์žฌ ๋ฐฐ๋‹ฌํ•ด์•ผํ•˜๋Š” ๋ฌผํ’ˆ์„ ์‹ฃ๋Š”๋‹ค. (๋ฌผํ’ˆ์˜ ์–‘ - ์ตœ๋Œ€ ์ ์žฌ ์ˆ˜) // 0๋ณด๋‹ค ์ ๋‹ค๋ฉด ์ ์žฌ ๊ฐ€๋Šฅ, 0 ์ด๋ผ๋ฉด ์ฆ‰์‹œ ๊ท€ํ™˜, 0๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด ์ผ๋ถ€๋งŒ ๋ฐฐ๋‹ฌ
        let diff = eachDist[0] + deliveries[dIdx] - cap
        // ๋ชจ๋“  ๋ฌผํ’ˆ์„ ์ ์žฌํ•œ ๊ฒฝ์šฐ
        if(eachDist[0] === 0 && deliveries[dIdx] > 0) {
            de_end.push(dIdx)
        }
        // ์ด๋ฒˆ ๋ฌผํ’ˆ์„ ๋ชจ๋‘ ์ ์žฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ์œ ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋ฉด
        if(diff <= 0) {
            eachDist[0] += deliveries[dIdx]
            deliveries[dIdx] = 0
        // ์ ์žฌ ๊ฐ€๋Šฅํ•œ ์–‘๋ณด๋‹ค ๋งŽ์€ ๋ฌผํ’ˆ์ด ์žˆ๋‹ค๋ฉด
        } else if(diff > 0) {
            deliveries[dIdx] -= cap - eachDist[0]
            eachDist[0] = 0
            continue
        }
        dIdx--
    }
    // ํšŒ์ˆ˜ํ•  ๊ณณ์ด ๋‚จ์•„์žˆ๋Š” ๋™์•ˆ ๋ฐ˜๋ณต    
    while(pIdx > -1) {
        let diff = eachDist[1] + pickups[pIdx] - cap
        if(eachDist[1] === 0 && pickups[pIdx] > 0) {
            pick_end.push(pIdx)   
        }
        if(diff <= 0) {
            eachDist[1] += pickups[pIdx]
            pickups[pIdx] = 0   
        }
        else if(diff > 0) {
            pickups[pIdx] -= cap - eachDist[1]
            eachDist[1] = 0
            continue
        }
        pIdx -= 1
    }
    // ๋ฐฐ๋‹ฌ ํ˜น์€ ํšŒ์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค๋ฉด
    if(de_end.length > 0 && pick_end.length > 0) {
        // ๋ฐฐ๋‹ฌ ์ˆ˜์™€ ํšŒ์ˆ˜ ์ˆ˜ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ž…๋ ฅ
        let min_len = de_end.length >= pick_end.length ? pick_end.length : de_end.length
        // ์ตœ์†Ÿ ๊ฐ’ ๋งŒํผ ๋ฐ˜๋ณต
        // ์™•๋ณต๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ด์•ผํ•˜๋ฏ€๋กœ 2 * (n+1)
        for(let i = 0 ; i < min_len ; i ++) {
            const d_last = de_end.shift()
            const p_last = pick_end.shift()
            result += 2 * (p_last > d_last ? p_last + 1 : d_last + 1)
        }
        while(de_end.length > 0) {
            result += 2 * (de_end.shift() + 1)
        }
        while(pick_end.length > 0) {
            result += 2 * (pick_end.shift() + 1)
        }
    }
//
    return result
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

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