ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ λ¬Έμ œν’€μ΄λ₯Ό ν•˜λ©°, μžλ£Œκ΅¬μ‘°μ™€ μ•Œκ³ λ¦¬μ¦˜μ΄ 많이 μ•½ν•œ 것 κ°™μ•„ JS κΈ°μˆ λ„μ„œλ₯Ό 찾던 쀑 μ°Ύκ²Œλ˜μ–΄ κ΅¬μž…ν–ˆλ‹€!

λ„μ„œ μ†Œκ°œ

자료 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜μ€ ν”„λ‘œκ·Έλž˜λ°μ˜ κΈ°λ³Έ μ€‘μ˜ κΈ°λ³Έμ΄μ§€λ§Œ, 처음 κ³΅λΆ€ν•˜λŠ” μ‚¬λžŒμ—κ²ŒλŠ” κ²°μ½” λ°°μš°κΈ°κ°€ 만만치 μ•Šκ³  λ”°λΆ„ν•  수 μžˆλŠ” κ³Όλͺ©μ΄λ‹€. 이 μ±… [μžλ°”μŠ€ν¬λ¦½νŠΈ 자료 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜(Learning JavaScript Data Structures and Algorithms)]은 인터넷 λΈŒλΌμš°μ €λ§Œ 있으면 κ³§λ°”λ‘œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•΄λ³Ό 수 있게, μš°λ¦¬μ—κ²Œ μΉœμˆ™ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•΄ λ”±λ”±ν•˜κ³  μž¬λ―Έμ—†λŠ” 자료 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ ν•™μŠ΅μ„ 쉽고 λͺ…μΎŒν•˜κ²Œ ν’€μ–΄μ€€λ‹€.

이 μ±…μ—μ„œ λ‹€λ£° λ‚΄μš©

β–  λ°°μ—΄, μŠ€νƒ, νμ—μ„œ μ›μ†Œμ˜ μ„ μ–Έ, μΆ”κ°€, μ‚­μ œ
β–  DFS와 BFS μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ κ°€μž₯ λ³΅μž‘ν•œ 자료 ꡬ쑰인 κ·Έλž˜ν”„λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©
β–  μ—°κ²° 리슀트, 이쀑 μ—°κ²° 리슀트, ν™˜ν˜• μ—°κ²° 리슀트의 κ°•λ ₯ν•œ μ“°μž„μƒˆ 이해
β–  ν•΄μ‹œ ν…Œμ΄λΈ”, λ”•μ…”λ„ˆλ¦¬, μ§‘ν•©μœΌλ‘œ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” μ›μ†Œ μ €μž₯
β–  이진 νŠΈλ¦¬μ™€ 이진 탐색 트리의 μ‘μš©
β–  버블 μ •λ ¬, 선택 μ •λ ¬, μ‚½μž… μ •λ ¬, 병합 μ •λ ¬, 퀡 μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•œ 자료 ꡬ쑰 μ •λ ¬
β–  순차 탐색과 이진 νƒμƒ‰μœΌλ‘œ 자료 ꡬ쑰의 μ›μ†Œ μ°ΎκΈ°
β–  O ν‘œκΈ°λ²•μ˜ μ€‘μš”μ„±κ³Ό 동적 ν”„λ‘œκ·Έλž˜λ°, μš•μ‹¬μŸμ΄ μ•Œκ³ λ¦¬μ¦˜ 이해

μΆ”μ²œ λ…μž

μžλ°”μŠ€ν¬λ¦½νŠΈ 개발자, λ˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 기초 지식을 κ°–μΆ˜ μ‚¬λžŒμ΄λΌλ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ΅œμ ν™”λœ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄μ„œ λΉ λ₯΄κ²Œ μ±…μž₯을 λ„˜κ²¨λ³Ό 수 μžˆμ„ 것이닀. μ•Œκ³ λ¦¬μ¦˜ 곡뢀λ₯Ό 재미있게 μ‹œμž‘ν•˜λ €λ©΄ μ•½κ°„μ˜ ν”„λ‘œκ·Έλž˜λ° 지식은 ν•„μš”ν•˜λ‹€.

이 μ±…μ˜ ꡬ성

1μž₯, β€˜μžλ°”μŠ€ν¬λ¦½νŠΈ κ°œμš”β€™μ—μ„œλŠ” 자료 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜μ„ 배우기 전에 ν•„μš”ν•œ 기본적인 λ‚΄μš©κ³Ό 이 μ±…μ˜ 예제 μ½”λ“œ μ‹€μŠ΅μ— ν•„μš”ν•œ 개발 ν™˜κ²½ 섀정을 μ„€λͺ…ν•œλ‹€.

2μž₯, β€˜λ°°μ—΄β€™μ—μ„œλŠ” 자료 ꡬ쑰의 κ°€μž₯ κΈ°λ³Έμ΄λ©΄μ„œ 많이 μ“°μ΄λŠ” 배열에 λŒ€ν•΄ 닀룬닀. λ°°μ—΄μ˜ μ›μ†Œλ₯Ό μ„ μ–Έ, μ΄ˆκΈ°ν™”, μΆ”κ°€, μ‚­μ œν•˜λŠ” 방법을 ꡬ체적인 μ˜ˆμ‹œλ‘œ μ„€λͺ…ν•˜κ³ , μžλ°”μŠ€ν¬λ¦½νŠΈ λ‚΄μž₯ λ©”μ†Œλ“œμ— λŒ€ν•΄μ„œλ„ μ•Œμ•„λ³Έλ‹€.

3μž₯, β€˜μŠ€νƒβ€™μ—μ„œλŠ” μŠ€νƒ 자료 ꡬ쑰λ₯Ό μ„€λͺ…ν•˜κ³ , μŠ€νƒμ˜ 생성 방법과 μ›μ†Œλ₯Ό μΆ”κ°€/μ‚­μ œν•˜λŠ” 방법을 μ‚΄νŽ΄λ³Έλ‹€. μŠ€νƒμ„ μ΄μš©ν•΄ 컴퓨터 κ³Όν•™μ˜ λ¬Έμ œλ“€μ„ μ–΄λ–»κ²Œ ν•΄κ²°ν•˜λŠ”μ§€ μ•Œμ•„λ³Έλ‹€.

4μž₯, β€˜νβ€™μ—μ„œλŠ” 큐 자료 ꡬ쑰λ₯Ό μ„€λͺ…ν•˜κ³ , 큐의 생성 방법과 μ›μ†Œλ₯Ό μΆ”κ°€/μ‚­μ œν•˜λŠ” 방법을 μ‚΄νŽ΄λ³Έλ‹€. 큐λ₯Ό μ΄μš©ν•΄ 컴퓨터 κ³Όν•™μ˜ λ¬Έμ œλ“€μ„ μ–΄λ–»κ²Œ ν•΄κ²°ν•˜λŠ”μ§€ μ•Œμ•„λ³΄κ³ , μŠ€νƒκ³Ό 큐의 차이점을 λΉ„κ΅ν•œλ‹€.

5μž₯, β€˜μ—°κ²° λ¦¬μŠ€νŠΈβ€™μ—μ„œλŠ” 객체와 포인터 κ°œλ…μ„ 가지고 μ—°κ²° 리슀트 자료 ꡬ쑰λ₯Ό λ§Œλ“€μ–΄λ³Έλ‹€. μ›μ†Œμ˜ μ„ μ–Έ, 생성, μΆ”κ°€, μ‚­μ œν•˜λŠ” 방법 외에도 이쀑 μ—°κ²° 리슀트, ν™˜ν˜• μ—°κ²° 리슀트 λ“±μ˜ λ³€ν˜•λœ ν˜•νƒœμ˜ μ—°κ²° λ¦¬μŠ€νŠΈμ— λŒ€ν•΄μ„œλ„ μ•Œμ•„λ³Έλ‹€.

6μž₯, β€˜μ§‘ν•©β€™μ—μ„œλŠ” 집합 자료 ꡬ쑰λ₯Ό μ†Œκ°œν•˜κ³ , λΉ„λ°˜λ³΅μ μΈ μ›μ†Œλ₯Ό μ €μž₯ν•˜λŠ” 방법을 μ•Œμ•„λ³Έλ‹€. λͺ‡ 가지 μƒμ΄ν•œ 집합 연산에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄κ³  각각을 μ–΄λ–»κ²Œ κ΅¬ν˜„ν• μ§€, μ–΄λ–»κ²Œ ν™œμš©ν• μ§€ λ°°μš΄λ‹€.

7μž₯, β€˜λ”•μ…”λ„ˆλ¦¬μ™€ ν•΄μ‹œβ€™μ—μ„œλŠ” λ”•μ…”λ„ˆλ¦¬, ν•΄μ‹œ 자료 ꡬ쑰와 λ‘˜ μ‚¬μ΄μ˜ 차이점을 μ„€λͺ…ν•œλ‹€. 두 자료 ꡬ쑰λ₯Ό μ„ μ–Έ, 생성, ν™œμš©ν•˜κ³ , ν•΄μ‹œ μΆ©λŒμ„ μš°νšŒν•΄ 더 λ‚˜μ€ ν•΄μ‹œ ν•¨μˆ˜λ₯Ό λ§Œλ“œλŠ” 기법 등을 μ•Œμ•„λ³Έλ‹€.

8μž₯, β€˜νŠΈλ¦¬β€™μ—μ„œλŠ” 트리 자료 ꡬ쑰와 κ΄€λ ¨ μš©μ–΄λ₯Ό μ„€λͺ…ν•˜κ³ , 이진 탐색 νŠΈλ¦¬μ™€ λ…Έλ“œλ₯Ό 탐색, 순회, μΆ”κ°€, μ‚­μ œν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μ§‘μ€‘μ μœΌλ‘œ 닀룬닀. ν₯λ―Έμ§„μ§„ν•œ 트리의 μ„Έκ³„λ‘œ μ•ˆλ‚΄ν•˜κ³ , λ‹€μŒ λ‹¨κ³„μ—μ„œ ν•™μŠ΅ν•΄μ•Ό ν•  트리 μ•Œκ³ λ¦¬μ¦˜μ„ μ œμ‹œν•œλ‹€.

9μž₯, β€˜κ·Έλž˜ν”„β€™μ—μ„œλŠ” λ†€λΌμš΄ κ·Έλž˜ν”„ 자료 ꡬ쑰의 μ„Έκ³„λ‘œ μ—¬λŸ¬λΆ„μ„ μ΄ˆλŒ€ν•œλ‹€. κ·Έλž˜ν”„λ₯Ό μ‘μš©ν•΄ μ‹€μƒν™œμ˜ 갖가지 λ¬Έμ œλ“€μ„ ν•΄κ²°ν•˜λŠ” 방법과 일반적인 κ·Έλž˜ν”„ μš©μ–΄λ“€, κ·Έλž˜ν”„λ₯Ό ν‘œν˜„ν•˜λŠ” μ—¬λŸ¬ 가지 방법, λ„ˆλΉ„ μš°μ„ , 깊이 μš°μ„  탐색 μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ κ·Έλž˜ν”„λ₯Ό μˆœνšŒν•˜λŠ” 방법과 μ‘μš© 사둀λ₯Ό μ‚΄νŽ΄λ³Έλ‹€.

10μž₯, β€˜μ •λ ¬κ³Ό 검색 μ•Œκ³ λ¦¬μ¦˜β€™μ—μ„œλŠ” κ°€μž₯ 많이 μ“°μ΄λŠ” μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜(버블 μ •λ ¬, 선택 μ •λ ¬, μ‚½μž… μ •λ ¬, 병합 μ •λ ¬, 퀡 μ •λ ¬)κ³Ό 탐색 μ•Œκ³ λ¦¬μ¦˜(순차 검색, 이진 검색)을 닀룬닀.

11μž₯, β€˜κ·Έ λ°–μ˜ μ•Œκ³ λ¦¬μ¦˜β€™μ—μ„œλŠ” λͺ‡λͺ‡ μ•Œκ³ λ¦¬μ¦˜μ„ μΆ”κ°€λ‘œ μ†Œκ°œν•˜κ³  O ν‘œκΈ°λ²•μ˜ κ°œλ…μ„ μ„€λͺ…ν•œλ‹€. μž¬κ·€ κ°œλ…μ„ λΉ„λ‘―ν•΄μ„œ 동적 ν”„λ‘œκ·Έλž˜λ°κ³Ό μš•μ‹¬μŸμ΄ μ•Œκ³ λ¦¬μ¦˜ 같은 κ³ κΈ‰ μ•Œκ³ λ¦¬μ¦˜ 기법을 닀룬닀. λ§ˆμ§€λ§‰μœΌλ‘œ, μ—¬λŸ¬λΆ„μ΄ 책거리λ₯Ό ν•œ 이후에 곡뢀할 λ‚΄μš©μ„ μ œμ‹œν•œλ‹€.

뢀둝, ’O ν‘œκΈ°λ²• μ •λ¦¬β€™μ—μ„œλŠ” 이 μ±…μ—μ„œ 배운 μ•Œκ³ λ¦¬μ¦˜μ˜ λ³΅μž‘λ„λ₯Ό O ν‘œκΈ°λ²•μœΌλ‘œ μ •λ¦¬ν•œ ν‘œλ₯Ό μ œκ³΅ν•œλ‹€.

profile
λ‚΄ 지식을 κ³΅μœ ν•  수 μžˆλŠ” λŒ€λ‹΄ν•¨

0개의 λŒ“κΈ€