# ์–ธ์–ด



# [JAVA]


# ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด๋ž€?

๋ฐฐ๊ฒฝ & ์งˆ๋ฌธ ์˜๋„

  • JVM ์˜ ๊ตฌ์กฐ, ํŠนํžˆ Heap Area ์— ๋Œ€ํ•œ ์ดํ•ด

๋‹ต๋ณ€

  • ์ž๋ฐ”๊ฐ€ ์‹คํ–‰๋˜๋Š” JVM ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด, ์ฆ‰ Heap ์˜์—ญ์˜ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๊ณผ์ •์—์„œ stop the world ๊ฐ€ ์ผ์–ด๋‚˜๊ฒŒ ๋˜๋ฉฐ, ์ด ์ผ๋ จ ๊ณผ์ •์„ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ๋ณ€๊ฒฝ ๋˜๋Š” ์„ธ๋ถ€ ๊ฐ’ ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ & ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์ข…๋ฅ˜์— ๋Œ€ํ•œ ์ดํ•ด

# StringBuilder์™€ StringBuffer์˜ ์ฐจ์ด๋Š”?

๋ฐฐ๊ฒฝ & ์งˆ๋ฌธ ์˜๋„

  • mutation(๊ฐ€๋ณ€), immutation(๋ถˆ๋ณ€) ์ดํ•ด
  • ๋ถˆ๋ณ€ ๊ฐ์ฒด์ธ String ์˜ ์—ฐ์‚ฐ์—์„œ ์˜ค๋Š” ํผํฌ๋จผ์Šค ์ด์Šˆ ์ดํ•ด
  • String
    • immutation
    • String ๋ฌธ์ž์—ด์„ ์—ฐ์‚ฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ถˆ๋ณ€ ๊ฐ์ฒด์˜ ๋ฐ˜๋ณต ์ƒ์„ฑ์œผ๋กœ ํผํฌ๋จผ์Šค๊ฐ€ ๋‚ฎ์•„์ง.

๋‹ต๋ณ€

  • ๊ฐ™์€์ 
    • mutation
    • append() ๋“ฑ์˜ api ์ง€์›
  • ์ฐจ์ด์ 
    • StringBuilder ๋Š” ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์—์„œ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค.
    • StringBuffer ๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ตฌํ˜„์€ ๋กœ์ง์„ ์˜์‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ & ๊ผฌ๋ฆฌ ์งˆ๋ฌธ


# Java์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€?

๋ฐฐ๊ฒฝ & ์งˆ๋ฌธ ์˜๋„

  • JVM ๊ตฌ์กฐ์˜ ์ดํ•ด

๋‹ต๋ณ€

  • ๋ฉ”์†Œ๋“œ, ํž™, ์Šคํƒ, pc ๋ ˆ์ง€์Šคํ„ฐ, ๋„ค์ดํ‹ฐ๋ธŒ ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
    • ๋ฉ”์†Œ๋“œ ์˜์—ญ์€ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ ์ƒ์„ฑ๋˜๋ฉฐ ์ฃผ๋กœ static ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ํž™ ์˜์—ญ์€ ๋Ÿฐํƒ€์ž„์‹œ ํ• ๋‹น๋˜๋ฉฐ ์ฃผ๋กœ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ์Šคํƒ ์˜์—ญ์€ ์ปดํŒŒ์ผ์‹œ ํ• ๋‹น๋˜๋ฉฐ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์‹œ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • pc ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ์œผ๋กœ ๋‹ค์Œ ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋„ค์ดํ‹ฐ๋ธŒ ์˜์—ญ์€ ์ž๋ฐ” ์™ธ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์œ„ํ•œ ์˜์—ญ์ž…๋‹ˆ๋‹ค.
  • ํž™๊ณผ ์Šคํƒ์€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋™์ ์œผ๋กœ ๊ณต์œ ํ•˜๋ฉฐ, ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ OOM ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํž™ ์˜์—ญ์€ GC ๋ฅผ ํ†ตํ•ด ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ & ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • Method Area (Class Area)
    • ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    • ํด๋ž˜์Šค, ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ ์ •๋ณด
    • static ๋ณ€์ˆ˜
    • Constant pool - ๋ฌธ์ž ์ƒ์ˆ˜, ํƒ€์ž…, ํ•„๋“œ, ๊ฐ์ฒด์ฐธ์กฐ๊ฐ€ ์ €์žฅ๋จ
  • Stack Area
    • ์ปดํŒŒ์ผ ํƒ€์ž„์‹œ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
    • ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๊ฐœ๋ณ„์ ์œผ๋กœ ์Šคํƒ์ด ์ƒ์„ฑ๋˜๋ฉฐ ์ข…๋ฃŒ์‹œ ํ•ด์ œ ๋ฉ๋‹ˆ๋‹ค.
    • ์ง€์—ญ ๋ณ€์ˆ˜ ๋“ฑ ์ž„์‹œ ๊ฐ’์ด ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ
    • Heap ์˜์—ญ์— ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • Heap Area
    • ๋Ÿฐํƒ€์ž„์‹œ ํ• ๋‹น ๋ฉ๋‹ˆ๋‹ค.
    • new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด ์ €์žฅ๋˜๋Š” ์˜์—ญ
    • ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†์–ด๋„ ๋ฐ”๋กœ ์ง€์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. -> GC ๋ฅผ ํ†ตํ•ด ์ œ๊ฑฐ๋จ.
  • Java : GC, ์ปดํŒŒ์ผ/๋Ÿฐํƒ€์ž„ ์ฐจ์ด
  • CS : ํ”„๋กœ์„ธ์Šค/๋‹จ์ผ ์Šค๋ ˆ๋“œ/๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ฐจ์ด

# ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์ฐจ์ด๋Š”?

๋ฐฐ๊ฒฝ & ์งˆ๋ฌธ ์˜๋„

๋‹ต๋ณ€

  • ์˜ค๋ฒ„๋กœ๋”ฉ
    • ๋ฐ˜ํ™˜ํƒ€์ž… ๊ด€๊ณ„ ์—†์Œ, ๋ฉ”์†Œ๋“œ๋ช… ๊ฐ™์Œ, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋‹ค๋ฆ„ (์ž๋ฃŒํ˜• ๋˜๋Š” ์ˆœ์„œ)
  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ
    • ๋ฐ˜ํ™˜ํƒ€์ž…, ๋ฉ”์†Œ๋“œ๋ช…, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชจ๋‘ ๊ฐ™์Œ
    • ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ.

ํ‚ค์›Œ๋“œ & ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ interface ์‚ฌ์šฉ์ด ์žˆ์œผ๋ฉฐ, ์ด ๊ณผ์ •์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ์ ๊ทน ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

# ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ์ฐจ์ด๋Š”?

๋ฐฐ๊ฒฝ & ์งˆ๋ฌธ ์˜๋„

๋‹ต๋ณ€

  • abstract class ์ถ”์ƒ ํด๋ž˜์Šค
    • ๋‹จ์ผ ์ƒ์†์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•˜๋‚˜ ์ด์ƒ์˜ abstract ๋ฉ”์†Œ๋“œ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ƒ์†์„ ํ†ตํ•ด abstract ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. (extends)
      • abstract ๋ฉ”์†Œ๋“œ๊ฐ€ ์•„๋‹Œ ๊ตฌํ˜„๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์† ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • interface ์ธํ„ฐํŽ˜์ด์Šค
    • ๋‹ค์ค‘ ์ƒ์†์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ƒ์ˆ˜๋Š” ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋Š” ์„ ์–ธ๋ถ€๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
    • ๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์„ ์–ธ๋œ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋ฅผ overriding ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ & ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • java ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก abstract ์˜ ๊ธฐ๋Šฅ์„ interface ๊ฐ€ ํก์ˆ˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • java 8: interface ์—์„œ default method ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • java 9: interface ์—์„œ private method ์‚ฌ์šฉ ๊ฐ€๋Šฅ

# ์ œ๋„ค๋ฆญ์ด๋ž€?

  • ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ํƒ€์ž…์„ ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์„ค์ •ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ
  • ์ œ๋„ค๋ฆญ์œผ๋กœ ์„ ์–ธํ•œ ํด๋ž˜์Šค๋Š”, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•จ
  • <์•ˆ์—๋Š” ์ฐธ์กฐ์ž๋ฃŒํ˜•(ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐฐ์—ด)๋งŒ ๊ฐ€๋Šฅํ•จ (๊ธฐ๋ณธ์ž๋ฃŒํ˜•์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  wrapper ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•จ)
  • ์ฐธ๊ณ 
    • Autoboxing, Unboxing

# ์ ‘๊ทผ ์ œ์–ด์ž๋ž€? (Access Modifier)

๋ฐฐ๊ฒฝ & ์งˆ๋ฌธ ์˜๋„

๋‹ต๋ณ€

  • public: ๋ชจ๋“  ์ ‘๊ทผ ํ—ˆ์šฉ
  • protected: ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค or ๊ฐ™์€ ํŒจํ‚ค์ง€๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ
  • default: ๊ธฐ๋ณธ ์ œํ•œ์ž. ์ž์‹  ํด๋ž˜์Šค ๋‚ด๋ถ€ or ๊ฐ™์€ ํŒจํ‚ค์ง€๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ
  • private: ์™ธ๋ถ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ. ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ๊ฐ€๋Šฅ

ํ‚ค์›Œ๋“œ & ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • ์ฐธ๊ณ 
    • ๋ณดํ†ต ๋ช…์‹œ์ ์ธ ํ‘œํ˜„์„ ์„ ํ˜ธํ•˜์—ฌ default ๋Š” ์ž˜ ์“ฐ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# Java ์ปดํŒŒ์ผ ๊ณผ์ •

๋ฐฐ๊ฒฝ & ์งˆ๋ฌธ ์˜๋„

  • CS ์— ๊ฐ€๊นŒ์šด ์งˆ๋ฌธ

๋‹ต๋ณ€

  1. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€ํ™˜: ์†Œ์Šค์ฝ”๋“œ -> ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ(.class)
  2. JVM์ด ๋ณ€ํ™˜: ๋ฐ”์ดํŠธ์ฝ”๋“œ -> ๊ธฐ๊ณ„์–ด
  3. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

ํ‚ค์›Œ๋“œ & ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • JIT ์ปดํŒŒ์ผ๋Ÿฌ

# Vector์™€ ArrayList์˜ ์ฐจ์ด๋Š”?

Vector : ๋™๊ธฐ์‹. ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒกํ„ฐ ์ž‘์—… ์ค‘์ด๋ฉด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒกํ„ฐ ๋ณด์œ  ๋ถˆ๊ฐ€๋Šฅ

ArrayList : ๋น„๋™๊ธฐ์‹. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ arraylist์—์„œ ๋™์‹œ ์ž‘์—…์ด ๊ฐ€๋Šฅ



# Serialization์ด๋ž€?

์ง๋ ฌํ™”. ๊ฐ์ฒด์˜ ์ƒํƒœ ํ˜น์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•ด์คŒ

๋‚˜์ค‘์— ์žฌ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ฑฐ๋‚˜ JSON์„ ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ



# Call by Value vs Call by Reference

๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ : ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋กœ ๋„˜๊ธฐ๋Š” ํ˜ธ์ถœ ๋ฐฉ์‹. ์›๋ณธ ๊ฐ’ ๋ณ€๊ฒฝX

์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ : ์ฃผ์†Œ ๊ฐ’์„ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ํ˜ธ์ถœ ๋ฐฉ์‹. ์›๋ณธ ๊ฐ’ ๋ณ€๊ฒฝO



# ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์ฐจ์ด๋Š”?

๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง. ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์— ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ ์†๋„ ๋น ๋ฆ„.

ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์‹œ ๊ทธ ์œ„์น˜์˜ ๋‹ค์Œ ์œ„์น˜๋ถ€ํ„ฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ๋˜๋Š” ๋‹จ์  ์กด์žฌ

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ์ธ๋ฑ์Šค ๋Œ€์‹ ์— ํ˜„์žฌ ์œ„์น˜์˜ ์ด์ „/๋‹ค์Œ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•จ.

ํฌ๊ธฐ๋Š” ๊ฐ€๋ณ€์ . ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋งํฌ๋ฅผ ์ญ‰ ๋”ฐ๋ผ๊ฐ€์•ผ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ. (๋”ฐ๋ผ์„œ ๋ฐฐ์—ด๋ณด๋‹ค ์†๋„ ๋Š๋ฆผ)

๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ๋Š” ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์šฉ์ดํ•จ

  • ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ๊ณ  ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ์—†์Œ. ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ๋งŽ์ด ํ•ด์•ผํ•  ๋•Œ โ†’ Array
  • ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ๊ณ  ์‚ฝ์ž…/์‚ญ์ œ ๋นˆ๋ฒˆํ•จ โ†’ LinkedList



# Hash๋ž€?

๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์‹œ, ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ€์–ด๋‚ด๊ฑฐ๋‚˜ ์ฑ„์šฐ์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ด€๋œ ๊ณ ์œ ํ•œ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•ด ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค



# C++ ์‹คํ–‰ ๊ณผ์ •

  • ์ „์ฒ˜๋ฆฌ : #define, #include ์ง€์‹œ์ž ํ•ด์„

  • ์ปดํŒŒ์ผ : ๊ณ ๊ธ‰ ์–ธ์–ด ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ ์ž…๋ ฅ ๋ฐ›๊ณ , ์–ด์…ˆ๋ธ”๋ฆฌ ํŒŒ์ผ ๋งŒ๋“ฌ

  • ์–ด์…ˆ๋ธ” : ์–ด์…ˆ๋ธ”๋ฆฌ ํŒŒ์ผ์„ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋กœ ๋งŒ๋“ฌ

  • ๋งํฌ : ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์„ ์—ฎ์–ด ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ

  • ์‹คํ–‰



# ๋ฉ”๋ชจ๋ฆฌ, ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ฐ๋‚˜๋Š” ๋ฐฉ๋ฒ•์€?

static์„ ์‚ฌ์šฉํ•ด ์„ ์–ธํ•œ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ผ์ด ์—†์œผ๋ฉด, static ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ˜ธ์ถœํ•˜์ž

๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์„œ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ˆ์•ฝ๋˜๊ณ  ์—ฐ์†์ ์œผ๋กœ ๊ทธ ๊ฐ’์˜ ํ๋ฆ„์„ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์กด์žฌ



# ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์˜ ์ฐจ์ด๋Š”?

๊ตฌ์กฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ๊ตฌ์กฐ๋กœ ๋ฌถ์ผ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

ํด๋ž˜์Šค๋Š” ๋ณ€์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฉ”์†Œ๋“œ๋„ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

(๋ฌผ๋ก  ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด ๊ตฌ์กฐ์ฒด๋„ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.)



# ์Šค๋ ˆ๋“œ๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑํ•˜๋‚˜์š”? ์žฅ๋‹จ์ ๋„ ๋งํ•ด์ฃผ์„ธ์š”

์ƒ์„ฑ๋ฐฉ๋ฒ• : Runnable(์ธํ„ฐํŽ˜์ด์Šค)๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค or Thread ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ run() ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ๋ฉด ๋จ

์žฅ์  : ๋น ๋ฅธ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์ •๋ณด ๊ณต์œ ๊ฐ€ ์‰ฌ์›€

๋‹จ์  : ๋ฐ๋“œ๋ฝ์— ๋น ์งˆ ์œ„ํ—˜์ด ์กด์žฌ



# ํฌ์ธํ„ฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

ํฌ์ธํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์ž„

์ฃผ์†Œ๋ฅผ ์ง€์นญํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์ธ๋ฐ, ์˜ˆ๋ฅผ ๋“ค๋ฉด ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ์—์„œ ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ์ธต์„ ํ‘œ์‹œํ•˜๋Š” ๋ฒ„ํŠผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ. 10์ธต์„ ๋ˆ„๋ฅด๋ฉด 10์ธต์œผ๋กœ ์ด๋™ํ•˜๋“ฏ, ํ•ด๋‹น ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜!

ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€, ์–ด๋–ค ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์–ด์•ผ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•จ

์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM