etc - GitDeveloperKim/DreamEach GitHub Wiki

  • ์‘์šฉํ•ด์„œ ๊ฐ™์ด ๋‚˜์˜ฌ๋งŒํ•œ ๊ธฐํƒ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ

ํฌ์†Œํ…Œ์ด๋ธ” (sparse table)

  • sparse table ํ™•์ธ ํ•„์š” click
  • Sparse Table ์—์„œ arr[i][j] = arr[ arr[i][j-1] ][j-1]
  • j ๊ฐ’์€ ์ด log2(๋…ธ๋“œ ์ˆ˜) ๋กœ ๊ณ„์‚ฐ
  • ์ด 15์นธ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•œ๋‹ค๋ฉด (8์นธ -> 4์นธ -> 2์นธ -> 1์นธ)
  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ๊ธˆ ๋” ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•˜์—ฌ 2^i ๋ฒˆ ๋ถ€๋ชจ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋ก / ์‹œ๊ฐ„๋ณต์žก๋„ O(MlogN)
  • click
  • click
  • click

์Šค์œ„ํ•‘

ํˆฌํฌ์ธํ„ฐ

  • ๋ฆฌ์ŠคํŠธ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ ๋‘๊ฐœ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  1. ์‹œ์ž‘์ (start)๊ณผ ๋์ (end)์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•œ๋‹ค.
  2. ํ˜„์žฌ๋ถ€๋ถ„ ํ•ฉ์ด M๊ณผ ๊ฐ™๋‹ค๋ฉด, ์นด์šดํŠธ ํ•œ๋‹ค.
  3. ํ˜„์žฌ ๋ถ€๋ถ„ํ•ฉ์ด M๋ณด๋‹ค ์ž‘๋‹ค๋ฉด end๋ฅผ 1 ์ฆ๊ฐ€ ์‹œํ‚จ๋‹ค
  4. ํ˜„์žฌ ๋ถ€๋ถ„ํ•ฉ์ด M๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด, start๋ฅผ 1 ์ฆ๊ฐ€ ์‹œํ‚จ๋‹ค
  5. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•  ๋•Œ๊นŒ์ง€ 2๋ฒˆ๋ถ€ํ„ฐ 4๋ฒˆ๊นŒ์ง€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค

sliding window

-TBD

์ ‘๋‘์‚ฌ ํ•ฉ

  • ๋ฐฐ์—ด์˜ ๋งจ ์•ž๋ถ€ํ„ฐ ํŠน์ • ์œ„์น˜๊นŒ์ง€์˜ ํ•ฉ์„ ๋ฏธ๋ฆฌ ๊ตฌํ•ด๋†“์€๊ฒƒ
  1. N๊ฐœ์˜ ์ˆ˜ ์œ„์น˜ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์ ‘๋‘์‚ฌ ํ•ฉ์„ ๊ณ„์‚ฐํ•˜์—ฌ P์— ์ €์žฅ
  2. ๋งค M๊ฐœ์˜ ์ฟผ๋ฆฌ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ๋•Œ ๊ตฌ๊ฐ„ํ•ฉ์€ P[Right] - P[Left-1]
  • 10, 20, 30, 40, 50
  • 0, 10, 30, 60, 100, 150
  1. left=1, right=3 -> p[3] - p[0] = 60
  2. left=2, right=5 -> p[5] - p[1] = 140
  3. left=3, right=4 -> p[4] - p[2] = 70