🍿 자료ꡬ쑰 κ°œλ… 정리 (2) μŠ€νƒ, 큐, 덱, ν•΄μ‹œν…Œμ΄λΈ”, μ…‹

leehyunjuΒ·2023λ…„ 3μ›” 11일
2
post-thumbnail

πŸ§‘πŸ»β€πŸ« 자료ꡬ쑰

πŸ“μŠ€νƒ

  • λ¨Όμ € λ“€μ–΄κ°„ 데이터가 λ‚˜μ€‘μ— λ‚˜μ˜€λŠ” 것이 κ·œμΉ™μ΄λ‹€.

일상 μƒν™œμ—μ„œ 예λ₯Ό λ“€μ–΄λ³΄μžλ©΄, μ—˜λ ˆλ² μ΄ν„°λ‚˜ μ§€ν•˜μ²  λ²„μŠ€λ₯Ό 타고 내릴 λ•Œ 늦게 λ“€μ–΄κ°„ μ‚¬λžŒμ΄ λ¨Όμ € λ‚˜μ˜€κ²Œ λ˜λŠ” 경우λ₯Ό 이 μŠ€νƒμ΄λΌλŠ” κ°œλ…μ— λΉ„μœ ν•΄λ³Ό 수 μžˆλ‹€.

좔상 μžλ£Œν˜•

λ¨Όμ €, μΆ”μƒμžλ£Œν˜•μ€ κΈ°λŠ₯의 κ΅¬ν˜„ 뢀뢄을 λ‚˜νƒ€λ‚΄μ§€ μ•Šκ³  μˆœμˆ˜ν•œ κΈ°λŠ₯이 무엇인지 λ‚˜μ—΄ν•œ 것을 좔상 μžλ£Œν˜•μ΄λΌκ³  ν•œλ‹€.

μŠ€νƒμ˜ 좔상 μžλ£Œν˜•

  • push 데이터 μ‚½μž…
  • pop 데이터 제거
  • peek 데이터 μ°Έμ‘°
  • isEmpty λΉ„μ—ˆλŠ”μ§€ 체크

push둜 ν•˜μ—¬κΈˆ μŠ€νƒμ— 데이터듀이 μŒ“μΈλ‹€. 그리고 pop ν•¨μˆ˜λ‘œ 인해 늦게 λ“€μ–΄μ˜¨ 데이터가 λ¨Όμ € λ‚˜κ°„λ‹€.

πŸ“ν

  • λ¨Όμ € λ“€μ–΄κ°„ 데이터가 λ¨Όμ € λ‚˜μ˜€λŠ” 것이 κ·œμΉ™μ΄λ‹€.
    μŠ€νƒκ³Όμ˜ λ°˜λŒ€λ˜λŠ” κ°œλ…μ΄λΌκ³  λ³΄λ©΄λœλ‹€.

일상 μƒν™œλ‘œ 예λ₯Ό 듀어보면, λ§ˆνŠΈμ—μ„œ 쀄을 μ„œμ„œ 계산할 λ•Œ λ¨Όμ € 온 μ†λ‹˜μ„ λ¨Όμ € κ³„μ‚°ν•˜λŠ” 경우라고 보면 λœλ‹€. νλŠ” 운영체제둜의 μ˜ˆμ‹œλ‘œλ„ λ³Ό 수 μžˆλ‹€. μš΄μ˜μ²΄μ œμ— λ¨Όμ € λ“€μ–΄μ˜¨ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ¨Όμ € μ²˜λ¦¬ν•΄μ£ΌλŠ” 것이닀.

큐의 좔상 μžλ£Œν˜•

  • push 데이터 μ‚½μž…
  • Shift 데이터 제거
  • enqueue 데이터 μ‚½μž…
  • dequeue 데이터 제거
  • front 데이터 μ°Έμ‘°
  • isEmpty λΉ„μ—ˆλŠ”μ§€ 확인

데이터가 μ‚½μž…, μ‚­μ œλ  λ•Œ 이전 λ…Έλ“œλ₯Ό μƒˆλ‘œ μ‚½μž…ν•œ λ…Έλ“œλ‘œ μ„€μ •ν•œλ‹€. 그리고 head에 μ‚½μž…ν•˜λŠ” κ²½μš°μ™€ tail에 μ‚½μž…ν•˜λŠ” 경우 κ·Έ μ™Έ μœ„μΉ˜μ— μ‚½μž…ν•˜λŠ” 경우의 μ½”λ“œλ‘œ κ΅¬λΆ„ν•˜μ—¬ μ§ λ‹€.

πŸ“λ±

  • μŠ€νƒκ³Ό 큐λ₯Ό 짬뽕 μ‹œν‚¨ 자유둜운 μžλ£Œκ΅¬μ‘°μ΄λ‹€.

덱의 좔상 μžλ£Œν˜•

  • printAll : λͺ¨λ“  데이터λ₯Ό 좜λ ₯ν•œλ‹€.
  • addFirst : head에 데이터λ₯Ό μ‚½μž…ν•œλ‹€.
  • removeFirst : headμ—μ„œ 데이터λ₯Ό μ œκ±°ν•œλ‹€.
  • addLast : tail에 데이터λ₯Ό μ‚½μž…ν•œλ‹€.
  • removeLast : tailμ—μ„œ 데이터λ₯Ό μ œκ±°ν•œλ‹€.
  • isEmpty : λΉ„μ—ˆλŠ”μ§€ 확인

πŸ“ν•΄μ‹œν…Œμ΄λΈ”

  • ν•΄μ‹œ ν…Œμ΄λΈ”μ€ ν•΄μ‹œμ™€ ν…Œμ΄λΈ”μ΄ 합쳐진 자료ꡬ쑰 (key와 value 값이라고 보면 됨)이닀. 만일 좩돌이 λ°œμƒν•œλ‹€λ©΄ μΈλ±μŠ€λ“€μ„ μ—°κ²°λ¦¬μŠ€νŠΈλ‘œ μ€‘λ³΅λœ κ°’λ“€ λ‘˜ λ‹€ μ €μž₯μ„ν•œλ‹€.

ν•΄μ‹œν…Œμ΄λΈ”μ˜ 좔상 μžλ£Œν˜•

  • set : key와 value에 데이터λ₯Ό μ‚½μž…ν•œλ‹€.
  • get : key와 value의 데이터λ₯Ό 읽어쀀닀.
  • remove : key와 value의 데이터λ₯Ό μ œκ±°ν•œλ‹€.

ν•΄μ‹œν…Œμ΄λΈ”μ˜ μž₯점

  • λΉ λ₯Έ 데이터 읽기, μ‚½μž…, μ‚­μ œ

단점

  • λ©”λͺ¨λ¦¬λ₯Ό 많이 μ°¨μ§€ν•œλ‹€.
  • ν•΄μ‹œ ν•¨μˆ˜μ— 따라 κ³΅κ°„μ˜ λ‚­λΉ„κ°€ κ·ΉλŒ€ν™”λ  μˆ˜λ„ 있고 쑰금 λœν•  μˆ˜λ„ μžˆλ‹€.
  • 쒋은 ν•΄μ‹œ ν•¨μˆ˜μ˜ κ΅¬ν˜„μ€ ν•„μˆ˜λ‹€.

πŸ“μ…‹

  • λ°μ΄ν„°μ˜ 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” μžλ£Œκ΅¬μ‘°μ΄λ‹€.
  • ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€κ°€ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” 값을 μ €μž₯ν•˜κ³  μ‹Άλ‹€λ©΄ 셋을 μ΄μš©ν•˜λ©΄ λœλ‹€. 셋은 ν•΄μ‹œ ν…Œμ΄λΈ”μ„ μ΄μš©ν•˜κΈ° λ•Œλ¬Έμ— μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€.
  • keyκ°’λ§Œ μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•  수 μžˆλ‹€.

μ…‹μ˜ 좔상 μžλ£Œν˜•

  • add(data) : key와 value에 데이터λ₯Ό μ‚½μž…ν•œλ‹€.
  • isContain(data) : 데이터 체크
  • remove(data) : key와 value의 데이터λ₯Ό μ œκ±°ν•œλ‹€.

μœ„ κ΄„ν˜Έμ•ˆμ— dataλŠ” λ§€κ°œλ³€μˆ˜λ₯Ό λœ»ν•œλ‹€.

  • clear() : 셋을 λΉ„μš°κΈ°
  • isEmpty() : 셋이 λΉ„μ—ˆλŠ”μ§€ 체크
  • printAll() : λͺ¨λ“  데이터 좜λ ₯
profile
μ•„λŠ‘ν•œ λ‡Œκ³΅κ°„ 🧠

0개의 λŒ“κΈ€