07 28 - nolsigan/nolsigan.github.io GitHub Wiki

Algorithm

๋ถ„ํ•  ์ •๋ณต

๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋””์ž์ธ ํŒจ๋Ÿฌ๋‹ค์ž„, ํ•œ ๋งˆ๋””๋กœ ์„ค๋ช…ํ•˜๋ฉด ๊ฐ๊ฐœ ๊ฒฉํŒŒ!

์ด 3๋‹จ๊ณ„๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ณผ์ • (divide)
  2. ๊ฐ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ตฌํ•œ ๋‹ต์„ ์›๋ž˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต์œผ๋กœ ๋ณ‘ํ•ฉ (merge)
  3. ๋”์ด์ƒ ๋‹ต์„ ๋ถ„ํ• ํ•˜์ง€ ์•Š๊ณ  ๊ณง์žฅ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์ž‘์€ ๋ฌธ์ œ (base case)

์‹œ๊ฐ„๋ณต์žก๋„๋Š” divide, merge์— ์ง€๋ฐฐ์ ์ด๋‹ค.

ex ) merge sort, quick sort, ์นด๋ผ์ธ ๋ฐ”์˜ ๋น ๋ฅธ ๊ณฑ์…ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฌธ์ œ ํ’€์ด ํŒ

string์ด๋‚˜ ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๋ฉฐ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค ํ•  ๋•Œ, ํ•จ์ˆ˜์— ํ•„์š”ํ•œ ๋ฒ”์œ„๋งŒํผ ์ž˜๋ผ ์ธ์ž๋กœ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ
๊ทธ๋ณด๋‹ค iterator๋ฅผ ์‚ฌ์šฉํ•ด ํ•„์š”ํ•œ ๋งŒํผ ๊ฐ€์ ธ๋‹ค ์“ฐ๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Thread๋‚˜ process ๊ธฐ๋ฐ˜ concurrency issue๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ•˜๋”๋ผ๋„ iterator๋Š” ํ•˜๋‚˜์”ฉ ์ „์ง„ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜์ž.