[ Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ with JAVA ] - ๊ตฌ๊ฐ„ํ•ฉ

2024. 8. 12. 15:00ใ†๐ŸŒŠ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ”ผ๋“œ๋ฐฑ/์ฝ”ํ…Œ ๊ด€๋ จ ๊ฐ•์ขŒ

[๋ถ€๋ถ„ ํ•ฉ (Partial sum)]

: ๋ถ€๋ถ„ ํ•ฉ์ด๋ž€ ๊ตฌ๊ฐ„ ํ•ฉ๊ณผ ๋‹ฌ๋ฆฌ ์ฒ˜์Œ๋ถ€ํ„ฐ ํŠน์ • ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค (Array[i] ๋ถ€ํ„ฐ Array[j]๊นŒ์ง€์˜ ํ•ฉ)

 

 

 

[๊ตฌ๊ฐ„ ํ•ฉ(Prefix sum)]

-> ํ•ฉ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋” ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŠน์ˆ˜ํ•œ ๋ชฉ์ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ณดํ†ต 1์ฐจ์› ๋ฐฐ์—ด์—์„œ i~k ์ธ๋ฑ์Šค ์‚ฌ์ด์˜ ๊ฐ’๋“ค์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค

(์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์œผ๋‹ˆ ๊ผญ ์•Œ์•„๋‘์–ด์•ผ ํ•œ๋‹ค!)

 

- ๊ตฌ๊ฐ„ ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € ํ•ฉ ๋ฐฐ์—ด์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค!

 

 

[ํ•ฉ ๋ฐฐ์—ด S์˜ ์ •์˜]

S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i]   //A[0] ๋ถ€ํ„ฐ A[i] ๊นŒ์ง€์˜ ํ•ฉ

 

ํ•ฉ ๋ฐฐ์—ด์€ ๊ธฐ์กด์˜ ๋ฐฐ์—ด์„ ์ „์ฒ˜๋ฆฌํ•œ ๋ฐฐ์—ด์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. 

์ด๋ ‡๊ฒŒ ํ•ฉ ๋ฐฐ์—ด์„ ๋ฏธ๋ฆฌ ๊ตฌํ•ด๋†“์œผ๋ฉด ๊ธฐ์กด ๋ฐฐ์—ด์˜ ์ผ์ • ๋ฒ”์œ„์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N)์—์„œ O(1)๋กœ ๊ฐ์†Œํ•œ๋‹ค

 

์˜ˆ๋ฅผ ๋“ค์–ด์„œ,  S(t)  = ๋ฐฐ์—ดA์˜ A[0] + A[1] + A[2] + A[3] + A[4] ์˜ ๊ฐ’์ด๋‹ค.

 

A[i] ๋ถ€ํ„ฐ A[j]๊นŒ์ง€์˜ ๋ฐฐ์—ด ํ•ฉ์„ ํ•ฉ ๋ฐฐ์—ด ์—†์ด ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ๋Š” i๊ฐ€ 0์ด๊ณ , j๊ฐ€ N์ธ ๊ฒฝ์šฐ๋กœ, ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค. => ํ•ฉ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด O(1) ์•ˆ์— ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ

 

[ํ•ฉ ๋ฐฐ์—ด S๋ฅผ ๋งŒ๋“œ๋Š” ๊ณต์‹]

S[i] = S[i-1] + A[i]

 

 

[๊ตฌ๊ฐ„ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ณต์‹]

S[j] - S[i-1]    //i์—์„œ j๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ ํ•ฉ

 

 

 

 

 

 

[A[2] ๋ถ€ํ„ฐ A[5]๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ ํ•ฉ์„ ํ•ฉ ๋ฐฐ์—ด๋กœ ๊ตฌํ•˜๋Š” ๊ณผ์ •]

S[5] = A[0] + A[1] + A[2] + A[3] + A[4]+ A[5]

S[1] = A[0] + A[1] 

S[5] - S[1] = A[2] + A[3] + A[4]+ A[5]

 

 

 

 

 

https://velog.io/@leeeeeyeon/%EA%B5%AC%EA%B0%84-%ED%95%A9-%EB%B6%80%EB%B6%84-%ED%95%A9-%EB%88%84%EC%A0%81-%ED%95%A9

 

๊ตฌ๊ฐ„ ํ•ฉ, ๋ถ€๋ถ„ ํ•ฉ, ๋ˆ„์  ํ•ฉ

๋ฐฐ์—ด์˜ ์ผ๋ถ€ ๊ตฌ๊ฐ„์— ๋Œ€ํ•œ ํ•ฉ์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•ด๋ณด์ž

velog.io