JavaRush /Java Blog /Random-KO /๋ ˆ๋ฒจ 36. ๋ ˆ๋ฒจ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€
lichMax
๋ ˆ๋ฒจ 40
ะกะฐะฝะบั‚-ะŸะตั‚ะตั€ะฑัƒั€ะณ

๋ ˆ๋ฒจ 36. ๋ ˆ๋ฒจ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๋‹ค์‹œ ํ•œ๋ฒˆ ๋ชจ๋“  ๊ฒƒ์„ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ ์•„๋ฌด๋Ÿฐ ๋‹ต๋„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ž˜. ์ˆœ์ „ํžˆ ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด ์ผ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ฐ„๋žตํ•˜๊ฒŒ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๋‚ซ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ 36.  ๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€-1 ์ฃผ์ œ์ธํ„ฐ๋ทฐ์— ๋Œ€ํ•œ ์งˆ๋ฌธ:
  1. MVC ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ ?
  2. DAO ์™€ DTO ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ ?
  3. POJO ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ ?
  4. ์—”ํ„ฐํ‹ฐ ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ ?
  5. ์–ด๋–ค ๋ชฉ๋ก ๋ชจ์Œ์„ ์•Œ๊ณ  ์žˆ๋‚˜์š”?
  6. ์–ด๋–ค ์ปฌ๋ ‰์…˜ ์„ธํŠธ๋ฅผ ์•Œ๊ณ  ์žˆ๋‚˜์š”?
  7. ์ง€๋„ ๋ž€ ๋ฌด์—‡์ด๋ฉฐ , " ์‚ฌ์ „ " ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๊นŒ ?
  8. ๋Œ€๊ธฐ์—ด ๊ณผ ๋Œ€๊ธฐ์—ด ์ œ๊ฑฐ ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ ?
  9. Queeue ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?
  10. ๋‚˜๋ฌด ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ?
์ด์ œ ๋‚ด ๋Œ€๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  1. MVC ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ์˜ ์„ธ ๊ฐ€์ง€ ๊ฐœ๋ณ„ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ ๋ช…๋ น์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋ชจ๋ธ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ์‘๋‹ตํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์„ ํ•ด์„ํ•˜์—ฌ ๋ชจ๋ธ์— ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•จ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํšŒ๋กœ์˜ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์™€ ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ํ”„๋กœ๊ทธ๋žจ ์œ ์—ฐ์„ฑ์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ชจ๋ธ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ ๋•Œ๋กœ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์—๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ ๋ชจ๋ธ์€ ์–‡๊ณ  ํ›„์ž์—์„œ๋Š” ๋‘๊บผ์šด ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  2. DAO (Data Access Object)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ์ž‘์—…์ธ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. DTO(Data Transfer Object)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์š” ์ž„๋ฌด๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๋…ผ๋ฆฌ๋„ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ์ฒด ์ „์†ก์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ง๋ ฌํ™”-์—ญ์ง๋ ฌํ™”๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. POJO๋Š” "Old Style Java Object"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” EJB ๊ฐ์ฒด์™€ ๋Œ€์กฐ๋ฉ๋‹ˆ๋‹ค. ํ›„์ž๋Š” ํŠน๋ณ„ํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋ ˆ์ž„์›Œํฌ์— ์—„๊ฒฉํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๊ณต๊ฐœ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ณ  ํ•„๋“œ์— ๋Œ€ํ•œ getter ๋ฐ setter๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ๋“ฑ). ๋”ฐ๋ผ์„œ POJO๋Š” ํŠน์ˆ˜ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์ง€ ์•Š๊ณ  ํŠน์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ POJO๋Š” ํŠน๋ณ„ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ƒํƒœ๋งŒ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  4. Entity Bean โ€” ัั‚ะพ ะฑะธะฝ, ั†ะตะปัŒ ะบะพั‚ะพั€ะพะณะพ ั…ั€ะฐะฝะธั‚ัŒ ะฝะตะบะพั‚ะพั€ั‹ะต ะดะฐะฝะฝั‹ะต. ะ’ ะปะพะณะธะบัƒ ั‚ะฐะบะพะณะพ ะฑะธะฝะฐ ะฒัั‚ั€ะพะตะฝ ะผะตั…ะฐะฝะธะทะผ ัะพั…ั€ะฐะฝะตะฝะธั ัะตะฑั ะธ ัะฒะพะธั… ะฟะพะปะตะน ะฒ ะฑะฐะทัƒ ะดะฐะฝะฝั‹ั…. ะขะฐะบะพะน an object ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ัƒะฝะธั‡ั‚ะพะถะตะฝ, ะฐ ะฟะพั‚ะพะผ ะฒะพััะพะทะดะฐะฝ ะธะท ะฑะฐะทั‹ ะทะฐะฝะพะฒะพ. ะะพ ะบั€ะพะผะต ั…ั€ะฐะฝะตะฝะธั ะดะฐะฝะฝั‹ั… ัƒ ะฝะตะณะพ ะฝะตั‚ ะฝะธHowะพะน ะปะพะณะธะบะธ. ะ ะฑะธะฝ ะฒ ัะฒะพัŽ ะพั‡ะตั€ะตะดัŒ โ€” ัั‚ะพ ะพัะพะฑั‹ะน ะบะปะฐัั, ะบะพั‚ะพั€ั‹ะต ะดะพะปะถะตะฝ ะฒั‹ะฟะพะปะฝัั‚ัŒ ัะปะตะดัƒัŽั‰ะธะต ะฟั€ะฐะฒะธะปะฐ:

    • ะšะปะฐัั ะดะพะปะถะตะฝ ะธะผะตั‚ัŒ ะบะพะฝัั‚ั€ัƒะบั‚ะพั€ ะฑะตะท ะฟะฐั€ะฐะผะตั‚ั€ะพะฒ, ั ะผะพะดะธั„ะธะบะฐั‚ะพั€ะพะผ ะดะพัั‚ัƒะฟะฐ public. ะขะฐะบะพะน ะบะพะฝัั‚ั€ัƒะบั‚ะพั€ ะฟะพะทะฒะพะปัะตั‚ ะธะฝัั‚ั€ัƒะผะตะฝั‚ะฐะผ ัะพะทะดะฐั‚ัŒ an object ะฑะตะท ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝั‹ั… ัะปะพะถะฝะพัั‚ะตะน ั ะฟะฐั€ะฐะผะตั‚ั€ะฐะผะธ.
    • ะกะฒะพะนัั‚ะฒะฐ ะบะปะฐััะฐ ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะดะพัั‚ัƒะฟะฝั‹ ั‡ะตั€ะตะท get, set ะธ ะดั€ัƒะณะธะต ะผะตั‚ะพะดั‹ (ั‚ะฐะบ ะฝะฐะทั‹ะฒะฐะตะผั‹ะต ะผะตั‚ะพะดั‹ ะดะพัั‚ัƒะฟะฐ), ะบะพั‚ะพั€ั‹ะต ะดะพะปะถะฝั‹ ะฟะพะดั‡ะธะฝัั‚ัŒัั ัั‚ะฐะฝะดะฐั€ั‚ะฝะพะผัƒ ัะพะณะปะฐัˆะตะฝะธัŽ ะพะฑ ะธะผะตะฝะฐั…. ะญั‚ะพ ะปะตะณะบะพ ะฟะพะทะฒะพะปัะตั‚ ะธะฝัั‚ั€ัƒะผะตะฝั‚ะฐะผ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ะพะฟั€ะตะดะตะปัั‚ัŒ ะธ ะพะฑะฝะพะฒะปัั‚ัŒ ัะพะดะตั€ะถะฐะฝะธะต beanโ€™ะพะฒ. ะœะฝะพะณะธะต ะธะฝัั‚ั€ัƒะผะตะฝั‚ั‹ ะดะฐะถะต ะธะผะตัŽั‚ ัะฟะตั†ะธะฐะปะธะทะธั€ะพะฒะฐะฝะฝั‹ะต ั€ะตะดะฐะบั‚ะพั€ั‹ ะดะปั ั€ะฐะทะปะธั‡ะฝั‹ั… ั‚ะธะฟะพะฒ ัะฒะพะนัั‚ะฒ.
    • ะšะปะฐัั ะดะพะปะถะตะฝ ะฑั‹ั‚ัŒ ัะตั€ะธะฐะปะธะทัƒะตะผ. ะญั‚ะพ ะดะฐั‘ั‚ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฝะฐะดั‘ะถะฝะพ ัะพั…ั€ะฐะฝัั‚ัŒ, ั…ั€ะฐะฝะธั‚ัŒ ะธ ะฒะพััั‚ะฐะฝะฐะฒะปะธะฒะฐั‚ัŒ ัะพัั‚ะพัะฝะธะต bean ะฝะตะทะฐะฒะธัะธะผั‹ะผ ะพั‚ ะฟะปะฐั‚ั„ะพั€ะผั‹ ะธ ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะน ะผะฐัˆะธะฝั‹ ัะฟะพัะพะฑะพะผ.
    • ะšะปะฐัั ะดะพะปะถะตะฝ ะธะผะตั‚ัŒ ะฟะตั€ะตะพะฟั€ะตะดะตะปะตะฝะฝั‹ะต ะผะตั‚ะพะดั‹ equals(), hashCode() ะธ toString().
  5. ะ’ัะต ะบะพะปะปะตะบั†ะธะธ-ัะฟะธัะบะธ ั€ะตะฐะปะธะทัƒัŽั‚ ะธะฝั‚ะตั€ั„ะตะนั List<E> ะธ ะฝะฐัะปะตะดัƒัŽั‚ัั ะพั‚ ะฐะฑัั‚ั€ะฐะบั‚ะฝะพะณะพ ะบะปะฐััะฐ AbstractList<E>. ะกั€ะตะดะธ ะฝะธั… ะผะพะถะฝะพ ะฒั‹ะดะตะปะธั‚ัŒ ArrayList<E> ะธ LinkedList<E7gt;. ArrayList7lt;E> โ€” ัั‚ะพ ัะฟะธัะพะบ, ะพัะฝะพะฒะฐะฝั‹ะน ะฝะฐ ะผะฐััะธะฒะต, ะฐ LinkedList<E> โ€” ัั‚ะพ ะบะปะฐััะธั‡ะตัะบะธะน ะดะฒัƒัะฒัะทะฝั‹ะน ัะฟะธัะพะบ.

  6. ะšะพะปะปะตะบั†ะธะธ-ะผะฝะพะถะตัั‚ะฒะฐ ะฒ Java ั€ะตะฐะปะธะทัƒัŽั‚ ะธะฝั‚ะตั€ั„ะตะนั Set<E> ะธ ะฝะฐัะปะตะดัƒัŽั‚ัั ะพั‚ AbstractSet<E>. ะœะฝะพะถะตัั‚ะฒะฐ โ€” ัั‚ะพ ั‚ะฐะบะธะต ะฝะฐะฑะพั€ั‹ ะดะฐะฝะฝั‹ั…, ะฒ ะบะพั‚ะพั€ั‹ั… ะฒัะต ัะปะตะผะตะฝั‚ั‹ ัƒะฝะธะบะฐะปัŒะฝั‹. ะกั€ะตะดะธ ะฝะธั… ะฒ Java ะตัั‚ัŒ HashSet, LinkedHashSet ะธ TreeSet. ะŸะตั€ะฒะฐั ะบะพะปะปะตะบั†ะธั ั…ั€ะฐะฝะธั‚ ัะฒะพะธ an objectั‹ ะฝะฐ ะพัะฝะพะฒะต ั…ะตัˆ-codeะพะฒ. ะ’ั‚ะพั€ะฐั โ€” ัั‚ะพ ะผะพะดะธั„ะธั†ะธั€ะพะฒะฐะฝะฝะฐั ะฟะตั€ะฒะฐั, ะฒ ะฝะตะน ัะปะตะผะตะฝั‚ั‹ ะตั‰ั‘ ะบ ั‚ะพะผัƒ ะถะต ั€ะฐัะฟะพะปะฐะณะฐัŽั‚ัั ะฒ ัะฒัะทะฝะพะผ ัะฟะธัะบะต, ะฟะพัั‚ะพะผัƒ ะพะฝะธ ะฒัะต ั€ะฐัะฟะพะปะพะถะตะฝั‹ ะฒ ะฟะพั€ัะดะบะต ะดะพะฑะฐะฒะปะตะฝะธั. ะขั€ะตั‚ัŒั ะบะพะปะปะตะบั†ะธั ะพะฑะตัะฟะตั‡ะธะฒะฐะตั‚ ัะพั€ั‚ะธั€ะพะฒะบัƒ ัะฒะพะธั… ัะปะตะผะตะฝั‚ะพะฒ.

  7. Map โ€” ัั‚ะพ ะฒะธะด ะบะพะปะปะตะบั†ะธะน, ั…ั€ะฐะฝัั‰ะธั… ัะฒะพะธ ัะปะตะผะตะฝั‚ั‹ ะฒ ะฒะธะดะต ะฟะฐั€ "ะบะปัŽั‡-ะทะฝะฐั‡ะตะฝะธั". ะŸั€ะธั‡ั‘ะผ ะฒัะต ะบะปัŽั‡ะธ ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ัƒะฝะธะบะฐะปัŒะฝั‹ะผะธ. ะกั€ะตะดะธ ั€ะตะฐะปะธะทะฐั†ะธะน ะตัั‚ัŒ HashMap ะธ TreeMap. ะŸะตั€ะฒะฐั ั€ะตะฐะปะธะทะฐั†ะธั ั…ั€ะฐะฝะธั‚ ัะปะตะผะตะฝั‚ั‹ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ั…ััˆ-codeะพะฒ. ะ’ั‚ะพั€ะฐั - ั…ั€ะฐะฝะธั‚ ัะปะตะผะตะฝั‚ั‹ ะฒ ะพั‚ัะพั€ั‚ะธั€ะพะฒะฐะฝะฝะพะผ ะฟะพ ะบะปัŽั‡ัƒ ะฟะพั€ัะดะบะต.

  8. ํ๋Š” ์„ ์ž… ์„ ์ถœ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์š”์†Œ๋Š” ํ์˜ ํ•œ์ชฝ ๋์—์„œ ์ถ”๊ฐ€๋˜๊ณ  ๋‹ค๋ฅธ ์ชฝ ๋์—์„œ๋Š” ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. Deque ๋Š” ์–‘๋ฐฉํ–ฅ ๋Œ€๊ธฐ์—ด์ž…๋‹ˆ๋‹ค. ์ด ๋Œ€๊ธฐ์—ด์—์„œ๋Š” ์š”์†Œ๋ฅผ ์‹œ์ž‘๊ณผ ๋ ๋ชจ๋‘์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋Œ€๊ธฐ์—ด์˜ ์‹œ์ž‘๊ณผ ๋ ๋ชจ๋‘์—์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ(add(e) ๋ฐ Offer(e) ๋ฉ”์„œ๋“œ)๊ฐ€ ์žˆ๊ณ  ๋Œ€๊ธฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ(remove( ) ๋ฐ ์„ค๋ฌธ์กฐ์‚ฌ()). ๋˜ํ•œ ๋Œ€๊ธฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๊ฐ„๋‹จํžˆ ๋Œ€๊ธฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(element() ๋ฐ peek() ๋ฉ”์„œ๋“œ). Deque ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ํ์˜ ์‹œ์ž‘๊ณผ ๋์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์‹œ์ž‘์ด๋‚˜ ๋์—์„œ ์š”์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ํ์˜ ์‹œ์ž‘์ด๋‚˜ ๋์—์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”(ํ์—์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ ) ์ถ”๊ฐ€๋กœ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  9. ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„์—๋Š” ArrayDeque , LinkedList ๋ฐ PriorityQueue ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค . ๋™์‹œ ์ปฌ๋ ‰์…˜์—๋Š” ์ด ๋‘ ์ธํ„ฐํŽ˜์ด์Šค(๋‘˜ ๋‹ค ๋™์‹œ์— ๋˜๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ)๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋งŽ์€ ํด๋ž˜์Šค๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  10. ํŠธ๋ฆฌ๋Š” ๋ฃจํ”„๋‚˜ ๋‹ค์ค‘ ๊ฐ„์„ ์ด ์—†๋Š” ์—ฐ๊ฒฐ๋œ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋ฆฌ์— N๊ฐœ์˜ ์ •์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ์ž๋ฆฌ ์ˆ˜๋Š” ์ตœ์†Œํ•œ N-1์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠธ๋ฆฌ์˜ ํ•œ ์ •์ ์ด ๋ฃจํŠธ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ์ •์ ์€ ๋ถ„๊ธฐ๋กœ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค. ์Šค์Šค๋กœ ๊ฐ€์ง€๊ฐ€ ์—†๋Š” ๊ฐ€์ง€๋ฅผ ๋‚˜๋ญ‡์žŽ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    ํŠธ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋ฉฐ ์ด ํŠธ๋ฆฌ์˜ ๋งŽ์€ ์œ ํ˜•์ด ์ด๋ฏธ ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋Š” ์ด์ง„ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ํŠธ๋ฆฌ์—์„œ ๊ฐ ์š”์†Œ์—๋Š” ์ตœ๋Œ€ 2๊ฐœ์˜ ํ•˜์œ„ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, 0์—์„œ 2๊นŒ์ง€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ). ์ด์ง„ ํŠธ๋ฆฌ์˜ ํ•œ ์œ ํ˜•์€ BST(์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ)์ž…๋‹ˆ๋‹ค. ์ด ํŠธ๋ฆฌ์—์„œ๋Š” ์š”์†Œ์— ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์š”์†Œ์˜ ์™ผ์ชฝ ์ž์‹์€ ๊ฐ’์ด ํ•ด๋‹น ์š”์†Œ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•˜๊ณ , ์˜ค๋ฅธ์ชฝ ์ž์‹์€ ๊ฐ’์ด ๊ทธ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ๋ ˆ๋“œ-๋ธ”๋ž™ ๋‚˜๋ฌด๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ํ•œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์—๋Š” ์š”์†Œ์˜ ๋˜ ๋‹ค๋ฅธ ์†์„ฑ์ธ ์ƒ‰์ƒ์ด ๋„์ž…๋ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ์€ ๊ฒ€์ •์ƒ‰ ๋˜๋Š” ๋นจ๊ฐ„์ƒ‰์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ๋‹ค์Œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    1. ๋‚˜๋ฌด์˜ ๋ฟŒ๋ฆฌ๋Š” ๊ฒ€์€์ƒ‰์ด๋‹ค.
    2. ๋…ธ๋“œ๋Š” ๋นจ๊ฐ„์ƒ‰์ด๊ฑฐ๋‚˜ ๊ฒ€์€์ƒ‰์ž…๋‹ˆ๋‹ค.
    3. ๋‚˜๋ฌด์˜ ๋ชจ๋“  ์žŽ์€ ๊ฒ€์€์ƒ‰์ด๋‹ค.
    4. ๋ ˆ๋“œ ๋…ธ๋“œ์˜ ๋‘ ์ž์†์€ ๋ชจ๋‘ ๋ธ”๋ž™์ด๋‹ค;
    5. ์ฃผ์–ด์ง„ ๋…ธ๋“œ์—์„œ ๊ทธ ์ž์†์ธ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€์˜ ๋ชจ๋“  ๊ฒฝ๋กœ์—๋Š” ๋™์ผํ•œ ์ˆ˜์˜ ๋ธ”๋ž™ ๋…ธ๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๋Š” ๋ฃจํŠธ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฒฝ๋กœ ๊ธธ์ด๊ฐ€ 1 ์ดํ•˜์ผ ๋•Œ ๊ท ํ˜•์„ ์ด๋ฃน๋‹ˆ๋‹ค. (์ฆ‰, ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ํŠธ๋ฆฌ์— ์™œ๊ณก์ด๋‚˜ ๊ธด ๊ฐ€์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.)
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION