GiantStepDEV
article thumbnail

ν•΄λ‹Ή μ‹œλ¦¬μ¦ˆλŠ” μ œκ°€ μ±…(μ‰½κ²Œ λ°°μš°λŠ” 자료ꡬ쑰 with μžλ°”)을 읽고 ν•΄λ‹Ή λ‚΄μš©μ„ μ •λ¦¬ν•˜κΈ° μœ„ν•˜μ—¬ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ–΄λ ΅λ‹€κ³  λŠκ»΄μ§€λŠ” 자료ꡬ쑰λ₯Ό μ΅œλŒ€ν•œ μ‰½κ²Œ μ„€λͺ…ν•˜κ³ μž ν’€μ–΄μ“°λŠ” 점 μ°Έμ‘°ν•΄μ£Όμ‹œκ³ ,

같이 자료ꡬ쑰/μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄ κ³΅λΆ€ν•˜λŠ” μ‹œκ°„μ΄ λ˜μ—ˆμœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€.


자료ꡬ쑰?

데이터λ₯Ό μ €μž₯, 쑰직, κ΄€λ¦¬ν•˜λŠ” 방법

 

μ„œμ μ΄λ‚˜ λ„μ„œκ΄€μ„ κ°€λ©΄ μ–΄λ–»κ²Œ λ‚΄κ°€ μ›ν•˜λŠ” 책을 λ°”λ‘œ 찾을 수 μžˆμ„κΉŒμš”?

책이 10ꢌ 이내라면 아무 기쀀없이 μŒ“μ•„λ‘¬λ„ λ‚΄κ°€ μ›ν•˜λŠ” 책은 μ‰½κ²Œ 찾을 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

 

ν—ˆλ‚˜ 책이 100ꢌ, 1000ꢌ, 1만ꢌ이 λ„˜μ–΄κ°„λ‹€λ©΄? μ΄λ•ŒλΆ€ν„°λŠ” μ’…λ₯˜λ³„λ‘œ λΆ„λ₯˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

이처럼 μ±…(자료)을 효율적으둜 κ΄€λ¦¬ν•˜λŠ” 방법을 '자료ꡬ쑰'라고 ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μžλ£Œκ΅¬μ‘°λŠ” μΌμƒμƒν™œμ—μ„œ μ‰½κ²Œ μ°Ύμ•„λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

 

문제 해결에 μ‚¬μš©ν•  λΆ€ν’ˆ

 

그럼 μ•Œκ³ λ¦¬μ¦˜μ€ λ¬΄μ—‡μΌκΉŒμš”?

μ–΄λ– ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 일련의 μˆœμ„œλ₯Ό λ§Œλ“€μ–΄λ‚΄λŠ” 과정을 κΈ°μˆ ν•œ 것을 μ•Œκ³ λ¦¬μ¦˜μ΄λΌ ν•©λ‹ˆλ‹€.

이 λ•Œ μžλ£Œκ΅¬μ‘°λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ μˆ˜ν–‰ν•  수 있게 λ„μ™€μ£ΌλŠ” 'λΆ€ν’ˆ' 역할을 ν•©λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄, 건좕 μž¬λ£Œμ™€ ꡬ쑰물에 λŒ€ν•΄ λͺ°λΌλ„ 집을 지을 순 μžˆμ§€λ§Œ 효율적이고 νŠΌνŠΌν•œ 집을 μ§“κΈ°λŠ” μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

μ½˜ν¬λ¦¬νŠΈλ‚˜ μ² κ³¨μ΄λΌλŠ” 재료λ₯Ό λͺ°λΌ 돌과 μ§šμ„ μ΄μš©ν•΄ 집을 μ§“λŠ” κ²ƒμ²˜λŸΌ 말이죠.

 

돌과 μ§šμ„ μ΄μš©ν•΄ λ§Œλ“  집도 집이긴 ν•˜μ§€λ§Œ..

ν˜„λŒ€μ—λŠ” 돌과 μ§šλ³΄λ‹€ 훨씬 쒋은 μž¬λ£Œλ“€μ΄ λ§ŽμŠ΅λ‹ˆλ‹€.

 

이처럼 μ•Œκ³ λ¦¬μ¦˜μ΄ λ³΅μž‘ν•  수둝 자료ꡬ쑰λ₯Ό μ‚¬μš©ν•œ 결과물은 κ°„νŽΈν•˜κ³  μœ μ§€λ³΄μˆ˜ν•˜κΈ°λ„ μ‰¬μ›Œμ§‘λ‹ˆλ‹€.

 

자료ꡬ쑰의 μ’…λ₯˜μ™€ μžλ°”μ˜ μ»¬λ ‰μ…˜ νŒ¨ν‚€μ§€

 

좜처 : https://www.lavivienpost.com/data-structures-and-java-collections/

μžλ£Œκ΅¬μ‘°λŠ” λ°μ΄ν„°λ₯Ό μ €μž₯ν•˜κ³  μ‘°μž‘ν•˜κΈ° μœ„ν•œ λ‹€μ–‘ν•œ λ°©λ²•을 μ œκ³΅ν•©λ‹ˆλ‹€. μžλ°”μ—μ„œλŠ” λ°°μ—΄, λ¦¬μŠ€νŠΈ, ν–‰λ ¬, μŠ€νƒ, ν, κ·Έλž˜ν”„, νŠΈλ¦¬, μ΅œλŒ€ νž™ λ“±μ˜ μžλ£Œκ΅¬μ‘°λ₯Ό κΈ°λ³Έμ μœΌλ‘œ μ œκ³΅ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ λͺ¨λ“  μƒν™©μ— μ΅œμ ν™”λœ μžλ£Œκ΅¬μ‘°κ°€ ν•­μƒ μžˆλŠ” κ²ƒμ€ μ•„λ‹ˆλ―€λ‘œ, ν•„μš”μ— λ”°λΌ μ§μ ‘ μžλ£Œκ΅¬μ‘°λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ₯Ό μœ„ν•΄μ„œλŠ” μžλ£Œκ΅¬μ‘°μ˜ λ‚΄λΆ€ μž‘동 μ›λ¦¬λ₯Ό μž˜ μ΄ν•΄ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

  • 리슀트, μŠ€νƒ 큐: 데이터가 ν•œ μ€„λ‘œ λ°°μΉ˜λ˜λŠ” μ„ ν˜• 자료ꡬ쑰
  • 검색 트리, ν•΄μ‹œ ν…Œμ΄λΈ” : 데이터λ₯Ό 효율적으둜 μ°ΎκΈ° μœ„ν•œ ꡬ쑰, 즉 색인을 μœ„ν•œ 자료ꡬ쑰
  • νž™ : μš°μ„  μˆœμœ„λ₯Ό λ‹€λ£¨λŠ” 자료ꡬ쑰
  • κ·Έλž˜ν”„ : κ°œμ²΄λ‚˜ λŒ€μƒλ“€μ˜ 관계λ₯Ό ν‘œν˜„ν•˜λŠ” 자료ꡬ쑰

자료ꡬ쑰의 좔상 데이터 νƒ€μž…

좔상

 

'좔상'에 κ΄€ν•΄μ„œλŠ” 제 λΈ”λ‘œκ·Έμ—μ„œ 객체지ν–₯의 4λŒ€ νŠΉμ„±μ„ λ‹€λ£° λ•Œ μžμ„Ένžˆ μ–ΈκΈ‰ν–ˆμ—ˆλŠ”λ°μš”.

μžλ£Œκ΅¬μ‘°μ—μ„œλ„ '좔상'μ΄λž€ κ°œλ…μ€ ꡉμž₯히 μ€‘μš”ν•©λ‹ˆλ‹€! 이미 잘 μ•Œκ³  κ³„μ‹œκ² μ§€λ§Œ ν•œ 번 더 짚고 λ„˜μ–΄κ°€λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

μ˜ˆμˆ κ³„(미술, μŒμ•…)μ—μ„œ 좔상이 μ˜λ―Έν•˜λŠ” λ°”λŠ” "μ‚¬λ¬Όμ˜ 사싀적 μž¬ν˜„, νŠΉμ •ν•œ 이미지 ν˜Ήμ€ 상징적 의미λ₯Ό ν‘œμΆœν•˜λŠ” 것이 μ•„λ‹Œ μˆœμˆ˜ν•œ μ˜ˆμˆ μ„±μ„ μΆ”κ΅¬ν•˜λŠ” 것" μž…λ‹ˆλ‹€. μžλ£Œκ΅¬μ‘°μ—μ„œ λ§ν•˜λŠ” '좔상'μ΄λž€ μ˜λ―Έλ„ 크게 λ‹€λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

점, μ„ , 음 같은 κ°€μž₯ ν•˜λΆ€ λ‹¨μœ„μ˜ 관점이 κ³„μΈ΅ν™”ν•˜λ©΄μ„œ μž‘ν’ˆμ΄ λ§Œλ“€μ–΄μ§€λ“― ν•˜μœ„μ˜ κ°œλ…λ“€μ„ κ²°ν•©ν•˜μ—¬ μƒμœ„μ˜ κ°œλ…μ„ λ§Œλ“€μ–΄λ‚˜κ°€λŠ” 단계 μž…λ‹ˆλ‹€. ν•˜μ—¬ ν”„λ‘œμ νŠΈλ‚˜ 문제 ν•΄κ²° κ³Όμ •μ—μ„œλŠ” 의미 λ‹¨μœ„λ₯Ό λΆ„λ¦¬ν•˜κ³  κ³„μΈ΅ν™”ν•˜λŠ” μž‘μ—…μ΄ λ°˜λ³΅λ©λ‹ˆλ‹€.

(객체 μ§€ν–₯의 클래슀)

 

의미 λ‹¨μœ„λŠ” λͺ¨λ“ˆμ΄λΌκ³ λ„ ν•©λ‹ˆλ‹€. λͺ¨λ“ˆμ„ 좔상화 ν•œλ‹€λŠ” 것은 'μ„ΈλΆ€ 사항을 μƒλž΅ν•˜κ³  κ°€μž₯ μ€‘μš”ν•œ κΈ°λŠ₯만 λ“œλŸ¬λ‚΄λŠ” 것'을 μ˜λ―Έν•©λ‹ˆλ‹€.

 

λͺ¨λ“ˆμ„ μΆ”μƒν™”ν•˜λŠ” 것이 자료ꡬ쑰의 핡심이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

좔상 μžλ£Œν˜•: ADT

 

좔상 μžλ£Œν˜•(Abstract Data Type)은 λ°μ΄ν„°μ˜ λ…Όλ¦¬μ  κ΅¬μ‘°μ™€ μ—°μ‚°μ˜ μ§‘합을 μ •μ˜ν•œ κ²ƒμž…λ‹ˆλ‹€. μ¦‰, μΆ”상 μžλ£Œν˜•은 λ°μ΄ν„°μ™€ κ·Έ λ°μ΄ν„°μ— λŒ€ν•œ μ—°μ‚°μ„ λ¬Άμ–΄ λ†“은 κ°œλ…μ μΈ ν‹€μ΄λΌκ³  λ³Ό μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

좔상 μžλ£Œν˜•은 λ°μ΄ν„°μ™€ μ—°μ‚°μ˜ κ΅¬μ²΄μ μΈ κ΅¬ν˜„ λ°©λ²•에 λŒ€ν•΄μ„œλŠ” κ·œμ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ¦‰, μΆ”상 μžλ£Œν˜•을 μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ°μ΄ν„°μ™€ μ—°μ‚°μ— λŒ€ν•œ λͺ…μ„Έλ§Œμ„ μ•Œκ³  μžˆμœΌλ©΄ λ©λ‹ˆλ‹€. λ”°λΌμ„œ μΆ”상 μžλ£Œν˜•은 λ°μ΄ν„°μ˜ ν‘œν˜„ λ°©λ²•κ³Ό κ·Έμ— λ”°λ₯Έ μ—°μ‚°μ˜ κ΅¬ν˜„ λ°©λ²•을 κ°μΆ”μ–΄, μ‚¬μš©μžκ°€ λ³΄λ‹€ μ‰½κ²Œ λ°μ΄ν„°λ₯Ό λ‹€λ£° μˆ˜ μžˆλ„둝 ν•΄ μ€λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μΆ”상 μžλ£Œν˜•μœΌλ‘œ μŠ€νƒ(Stack)을 μ •μ˜ν•˜λ©΄, μŠ€νƒμ˜ μ—°μ‚°μ—λŠ” push(데이터 μΆ”κ°€), pop(데이터 μ‚­μ œ), top(μŠ€νƒμ˜ λ§¨ μœ„에 μžˆλŠ” λ°μ΄ν„° μ‘°νšŒ) λ“±μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄ μ—°μ‚°μ„ μ‚¬μš©ν•˜λ©΄ λ°μ΄ν„°λ₯Ό μ‚½μž…, μ‚­μ œ, μ‘°νšŒν•  μˆ˜ μžˆμœΌλ©°, μ΄ μ—°μ‚°λ“€μ΄ μ–΄λ–»κ²Œ κ΅¬ν˜„λ˜μ—ˆλŠ”μ§€λŠ” μ‚¬μš©μžκ°€ μ•Œ ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ, μΆ”상 μžλ£Œν˜•은 λ°μ΄ν„° κ΅¬μ‘°λ₯Ό μΆ”μƒν™”ν•˜κ³ , κ΅¬ν˜„ μ„ΈλΆ€ μ‚¬ν•­μ„ μˆ¨κΈ°λŠ” κΈ°μˆ λ‘œ, ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±, μœ μ§€λ³΄μˆ˜μ„±, κ·Έλ¦¬κ³  μ½”λ“œμ˜ κ°€λ…성을 ν–₯μƒμ‹œν‚€λŠ” λ° λ„움을 μ€λ‹ˆλ‹€.

 

μžλ°”μ—μ„œλŠ” μΆ”상 μžλ£Œν˜•을 λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μΈν„°νŽ˜μ΄μŠ€(interface)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 


profile

GiantStepDEV

@kongmi

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!