๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐํ•˜๊ธฐ - ํŒŒ์ด์ฌ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐํ•˜๊ธฐ - ํŒŒ์ด์ฌ

.23 2024. 11. 14. 21:05
๋ฌธ์ œ

๐Ÿ”— : ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐํ•˜๊ธฐ

๋‹น์‹ ์€ ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ 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๊ฐœ

 

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

 

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[i] ≤ 50
    • 0 ≤ pickups[i] ≤ 50
  • ํŠธ๋Ÿญ์˜ ์ดˆ๊ธฐ ์œ„์น˜๋Š” ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์ž…๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

 


๋ ˆ๋ฒจ2 ์•ˆ๊ฐ™์€ ๋ ˆ๋ฒจ2 ๋ฌธ์ œ์ด๋ฉฐ,

์•„์ง๋„ ๋ชป์นœํ•ด์ง„ ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ.

 

ํ’€์ด ์ฐธ๊ณ : https://school.programmers.co.kr/questions/43364

 

๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๋Š” ์‚ฌ์‹ค ์†๋„ ๋ชป๋Œ€๊ฒ ์–ด์„œ ์œ„์˜ ํ’€์ด๋ฅผ ๋งŽ์ด ์ฐธ์กฐํ–ˆ๋‹ค.ใ… ใ… 

 

์œ„ ๋งํฌ์—์„œ ์–˜๊ธฐํ•˜๋Š” ํฌ์ธํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

- i ๊ฑฐ๋ฆฌ์˜ ์ง‘์— ๋ฐฐ๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ˆ˜๊ฑฐํ•  ์ƒ์ž๊ฐ€ ๋‚จ์•˜๋‹ค๋ฉด, ์–ด์ฐจํ”ผ i๋งŒํผ ์ด๋™ํ•ด์•ผ๋œ๋‹ค.

- ๋ฌผ๋ฅ˜์ฐฝ๊ณ ์—์„œ ์ถœ๋ฐœํ•ด์„œ ๋‹ค์‹œ ๋Œ์•„์˜ค๋Š” ๊ธธ์—๋Š” ๋ฌด์กฐ๊ฑด cap๋งŒํผ ๋ฐฐ๋‹ฌ / ์ˆ˜๊ฑฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

- i๊นŒ์ง€ ๊ฐ”๋Š”๋ฐ ๋ฏธ์ฒ˜ ์ฒ˜๋ฆฌ ๋ชปํ•œ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ ์ƒ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, i๊นŒ์ง€ ๋‹ค์‹œ ์™€์•ผ ๋œ๋‹ค.

 

→ ์ฆ‰, cap๋งŒํผ ๋ฐฐ๋‹ฌ/์ˆ˜๊ฑฐ ๊ฐ€๋Šฅํ•œ ์ตœ์žฅ๊ฑฐ๋ฆฌ i์—์„œ๋ถ€ํ„ฐ ๋’ค๋กœ ํƒ์ƒ‰ํ•ด๋‚˜๊ฐ„๋‹ค.

 

 

๋ฐฐ์—ด์„ ๋’ค์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•ด๊ฐ€๋ฉด์„œ, cap๋งŒํผ ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

์ด ๋•Œ, i๋งŒํผ ๊ฐ€๋Š” ๊ธธ์— ๋ฐฐ๋‹ฌ ๋จผ์ €/์ˆ˜๊ฑฐ ๋จผ์ € ์—ฌ๋ถ€๋Š” ํŠธ๋Ÿญ์ด ํŒ๋‹จํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด 5๋ฒˆ ์ง‘๊นŒ์ง€ ๊ฐ€๋Š” ๊ธธ์— 4๋ฒˆ → 5๋ฒˆ์ง‘์„ ๊ฐ€๋ฉด์„œ ๋ฐฐ๋‹ฌ์„ ๋จผ์ € ํ•˜๊ณ 

5๋ฒˆ์—์„œ ๋Œ์•„์˜ค๋Š” ๊ธธ์— 5๋ฒˆ → 4๋ฒˆ → 3๋ฒˆ ๊ฐ€๋ฉด์„œ ์ˆ˜๊ฑฐ๋ฅผ ํ•˜๋˜์ง€,

 

4๋ฒˆ ์ง‘์— ๋ฐฐ๋‹ฌ ํ•˜๋‚˜, ์ƒ์ž 2๊ฐœ๋ฅผ ์ˆ˜๊ฑฐํ•˜๊ณ 

5๋ฒˆ ์ง‘์— ๋ฐฐ๋‹ฌ ๋‘๊ฐœํ•˜๊ณ  ๋Œ์•„์˜ค๋Š” ๊ธธ์— 4๋ฒˆ ์ง‘์˜ ํƒ๋ฐฐ 2๊ฐœ๋ฅผ ๋งˆ์ € ์ˆ˜๊ฑฐ..๋ญ ๋“ฑ๋“ฑ๋“ฑ ํ•˜๋ฉด์„œ ์•Œ์•„์„œ ์˜ค๋˜์ง€

 

์–ด์ฐจํ”ผ 5๋ฒˆ ์ง‘์„ ์ฐ๊ณ  ๋Œ์•„์˜ค๋Š” ๊ธธ์— ๋ชจ๋“  ์ผ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฐ๋‹ฌ๊ณผ ์ˆ˜๊ฑฐ์˜ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.

๋‹ค์‹œ ๋งํ•˜๋ฉด ๋ฐฐ๋‹ฌ / ์ˆ˜๊ฑฐ๋Š” ๋ณ„๊ฐœ์˜ task๋กœ ์ƒ๊ฐํ•œ๋‹ค.

 

 

์—ฌ๊ธฐ๊นŒ์ง€ ์•„์ด๋””์–ด๋Š” ์ดํ•ดํ–ˆ๊ณ , ์ฝ”๋“œํ™”ํ•˜๋Š” ๊ณผ์ •์—์„œ

 

[ ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๋ฐฐ๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ˆ˜๊ฑฐํ•  ํƒ๋ฐฐ๊ฐ€ ์žˆ๋Š” ์ง‘์„ ์ฐพ๋Š” ๋ฐ ๊นŒ์ง€ ํƒ์ƒ‰ํ•œ๋‹ค. ]

์ด ๋ถ€๋ถ„์„ ํŒŒ์ด์ฌ์œผ๋กœ ํ’€๋ฉด ๋ฐฑํผ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™์•˜๋‹ค....

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—

(n-1)๋ถ€ํ„ฐ ๊ฐ ์ง‘์„ ๊ฑฐ๊พธ๋กœ ๋Œ๋ฉด์„œ,

 

- ๋ฐฐ๋‹ฌ ์ ์žฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ณ€์ˆ˜์™€ ์ˆ˜๊ฑฐ ์ ์žฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ณ€์ˆ˜์— i๋ฒˆ์งธ ์ง‘์˜ ๋ฐฐ๋‹ฌ / ์ˆ˜๊ฑฐ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ๊ฐ ๋”ํ•ด์ค€๋‹ค.

- ๋งŒ์•ฝ ์ง€๊ธˆ ํŠธ๋Ÿญ์— ์ ์žฌ๋œ ๊ฐœ์ˆ˜๊ฐ€ 0๋ณด๋‹ค ์ปค์กŒ๋‹ค๋ฉด,

    - ์ง€๊ธˆ ์ ์žฌ๋œ ์–‘์€ ๋ช‡ ๋ฒˆ์„ ์™•๋ณตํ•ด์•ผ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š”์ง€ count ํ•œ๋‹ค.

    - ๊ฐ๊ฐ์˜ ์ ์žฌ ๊ด€๋ฆฌ ๋ณ€์ˆ˜์— (ํšŸ์ˆ˜ x ์ ์žฌ ์šฉ๋Ÿ‰) ๋งŒํผ ๋นผ์„œ ์ด๋™ ํ›„ ํ˜„์žฌ ์ ์žฌ๋œ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

- ํ˜„์žฌ ์ง‘์˜ ์œ„์น˜์™€ ์™•๋ณต ํšŸ์ˆ˜๋ฅผ ๊ณฑํ•ด์„œ ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

 

์•„์ด๋””์–ด๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๋‚˜๋ฆ„ ๋‚˜๋งŒ์˜ ๋ฐฉ์‹๋Œ€๋กœ ํ’€์–ด๋ดค๋‹ค...

์—ฌ์ „ํžˆ ์–ด๋ ต๋‹คใ…œใ…œ

 

์ฝ”๋“œ
def solution(cap, n, deliveries, pickups):
    answer = 0

    left_p, left_d = 0, 0
    for i in range(n - 1, -1, -1):
        cnt = 0

        left_p += deliveries[i]
        left_d += pickups[i]

        if left_p > 0 or left_d > 0:
            cnt = (max(left_d, left_p) + cap - 1) // cap
            left_d -= cap * cnt
            left_p -= cap * cnt
    
        answer += (i + 1) * 2 * cnt

    return answer
Comments