λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍎 iOS/Swift

[Swift] μŠ€ν„°λ”” 3μ£Όμ°¨ - μŠ€μœ„ν”„νŠΈ 데이터 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜

by Danna 2021. 6. 7.
728x90
728x90

5/4 μ§„ν–‰ν–ˆλ˜ μŠ€μœ„ν”„νŠΈ 데이터 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ μ±…μ˜ 3μž₯ 'μŠ€μœ„ν”„νŠΈ κ³ κΈ‰ 데이터 ꡬ쑰의 ν™œμš©' μŠ€ν„°λ”” μ •λ¦¬μž…λ‹ˆλ‹€!

 

πŸ‘€ 3μž₯ μš”μ•½

3μž₯μ—μ„œλŠ” Swift κΈ°λ³Έ 데이터 ꡬ쑰 쀑 Collections (Array, Dictionary, Set) 을 ν™œμš©ν•΄μ„œ λ‹€μ–‘ν•œ 데이터 ꡬ쑰에 λŒ€ν•΄ μ„€λͺ…ν•˜κ³  Swift μ½”λ“œλ‘œ μž‘μ„±ν•˜λŠ” 법을 ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€! Stack(μŠ€νƒ), Queue(큐), Circular Buffer(μˆœν™˜λ²„νΌ), Priority Queue(μš°μ„ μˆœμœ„ 큐), Linked List(μ—°κ²° λͺ©λ‘) μ΄λ ‡κ²Œ 여섯가지λ₯Ό 닀루고 있고, μ£Όμ œλŠ” 크게 λ‹€μŒμ²˜λŸΌ λ‚˜λ‰©λ‹ˆλ‹€.

 

  • κΈ°λ³Έ 데이터ꡬ쑰 κ΅¬ν˜„μ„ μœ„ν•œ νƒ€μž…κ³Ό ν”„λ‘œν† μ½œ μ„€λͺ… - Iterator, Sequence, Collection 
  • λ‹€μ–‘ν•œ 데이터 ꡬ쑰에 λŒ€ν•œ μ„€λͺ…κ³Ό Swift 둜 기본적인 μž…/좜λ ₯ 처리 κ΅¬ν˜„ν•˜κΈ°
  • Swift 둜 κ΅¬ν˜„ν•œ 데이터 ꡬ쑰에 ν”„λ‘œν† μ½œμ„ μΆ”κ°€ν•΄ Collections 처럼 μž‘λ™ν•˜λ„λ‘ ν•˜κΈ°

 

✏️ 데이터 ꡬ쑰 μš”μ•½

  • Stack (μŠ€νƒ) : λ‚˜μ€‘μ— μž…λ ₯λ˜λŠ” 것이 λ¨Όμ € 좜λ ₯λ˜λŠ” LIFO 데이터 ꡬ쑰, μ ‘μ‹œλ₯Ό μŒ“λŠ” 것과 λΉ„μŠ·ν•˜λ‹€.
  • Queue (큐) : λ¨Όμ € μž…λ ₯λ˜λŠ” 것이 λ¨Όμ € 좜λ ₯λ˜λŠ” FIFO 데이터 ꡬ쑰, 식당 μ£Όλ¬Έ μˆœμ„œ ν˜Ήμ€ ν„°λ„μ˜ μ°¨λ“€κ³Ό λΉ„μŠ·ν•˜λ‹€.
  • Circular Buffer (μˆœν™˜ 버퍼) : 크기가 μ§€μ •λœ FIFO 데이터 ꡬ쑰둜 Head index, Tail index 두 개λ₯Ό μ΄μš©ν•΄ μ‹œμž‘κ³Ό 끝을 μ—°κ²°ν•œλ‹€. λ²„νΌμ˜ 크기가 가득차면 μΈλ±μŠ€κ°€ μˆœν™˜λ˜μ–΄ 기쑴의 λ°μ΄ν„°λŠ” μƒˆλ‘œμš΄ λ°μ΄ν„°λ‘œ λ³€κ²½λœλ‹€.
  • Priority Queue (μš°μ„ μˆœμœ„ 큐) : Queue 와 λΉ„μŠ·ν•˜μ§€λ§Œ, 각각의 μš”μ†ŒλŠ” μš°μ„ μˆœμœ„ 값을 μ§€λ‹Œλ‹€. μš°μ„ μˆœμœ„λ₯Ό 기반으둜 μ •λ ¬λ˜μ–΄ 있으며, 값을 λΉΌλ‚Ό λ•Œ, 더 높은 μš°μ„ μˆœμœ„λ₯Ό μ§€λ‹Œ μš”μ†Œκ°€ λ¨Όμ € νμ—μ„œ λΉ μ Έλ‚˜μ˜¨λ‹€.
  • Linked List (μ—°κ²° λͺ©λ‘) : μ—°κ²°λœ 값을 μ§€λ‹Œ λ°°μ—΄κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ, 각각의 μš”μ†Œκ°€ 이전 / λ‹€μŒ μš”μ†Œμ˜ μ£Όμ†Œλ₯Ό 가지고 μžˆλ‹€. μš”μ†Œμ˜ μ‚½μž…κ³Ό μ‚­μ œκ°€ λΉ λ₯΄λ‹€λŠ” μž₯점이 μžˆλ‹€.

 

 

πŸ€” μ–΄λ €μ› λ˜ λΆ€λΆ„ / ν—·κ°ˆλ Έλ˜ λΆ€λΆ„

1. Collections 에 ν•΄λ‹Ήν•˜λŠ” Array, Dictionary 등을 μ‚¬μš©ν•΄λ΄€μ§€λ§Œ, for ... in μˆœν™˜λ¬Έκ³Ό μ„œλΈŒμŠ€ν¬λ¦½νŠΈ κΈ°λŠ₯이 μ–΄λ–»κ²Œ μž‘λ™λ˜λŠ”μ§€ 확인해본적이 μ—†μ—ˆλ‹€. 3μž₯μ—μ„œλŠ” 이λ₯Ό κ°€λŠ₯ν•˜λ„λ‘ ν•œ νƒ€μž…κ³Ό ν”„λ‘œν† μ½œμ— λŒ€ν•΄ μ„€λͺ…ν•˜κ³  μžˆμ—ˆκΈ°μ— μ–΄λ ΅κ²Œ λŠκ»΄μ‘Œλ‹€.

 

2. 각 데이터 ꡬ쑰가 μ–΄λŠ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ˜λŠ”μ§€ μ„€λͺ…은 λ΄€μ§€λ§Œ, λͺ…ν™•νžˆ μ΄ν•΄λ˜μ§€ λͺ»ν–ˆλ‹€.

 

 

πŸ’‘ ν•΄κ²°ν•œ λ°©λ²• / μΆ”κ°€ ν•™μŠ΅

1. Iterator, Sequence, Collection ν”„λ‘œν† μ½œμ— λŒ€ν•΄ μ±…κ³Ό ν•¨κ»˜ Apple κ³΅μ‹λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜λ©° ν•™μŠ΅ν–ˆλ‹€.

 

  • Iterator λŠ” IteratorProtocol ν”„λ‘œν† μ½œμ— λΆ€ν•©ν•˜λŠ” νƒ€μž…μ΄λ‹€. IteratorProtocol 의 λͺ©μ μ€ next() λ©”μ†Œλ“œλ₯Ό 톡해 μ»¬λ ‰μ…˜μ„ 반볡 μˆœνšŒν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이닀. 
  • Sequence λŠ” Sequence ν”„λ‘œν† μ½œμ— λΆ€ν•©ν•˜λŠ” νƒ€μž…μ΄λ‹€. Sequence λŠ” for ... in μˆœν™˜λ¬ΈμœΌλ‘œ μš”μ†Œλ₯Ό 반볡 μˆœνšŒν•  수 μžˆλ‹€.
  • Collection 은 Collection ν”„λ‘œν† μ½œμ— λΆ€ν•©ν•˜λŠ” νƒ€μž…μ΄λ‹€. Collection 은 νŠΉμ • 인덱슀의 μš”μ†Œλ₯Ό μ ‘κ·Όν•  수 μžˆλŠ” subscript λ₯Ό μ œκ³΅ν•˜λ©°, startIndex, endIndex 속성을 가지며, νŠΉμ • μΈλ±μŠ€μ— 값을 μ‚½μž…ν•  수 μžˆλ‹€.

πŸ‘‰ κ΄€λ ¨ ν¬μŠ€νŒ…

 

2. μ±…μ˜ 2νšŒλ… λΆ€ν„°λŠ” κ΄€λ ¨ μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€λ©΄μ„œ μ–΄λ–€ κ²½μš°μ— μ μš©λ˜λŠ”μ§€ 확인해보도둝 ν–ˆλ‹€.

 

πŸ‘‰ Swift 둜 ν‘Ό μŠ€νƒ/큐 μ•Œκ³ λ¦¬μ¦˜

 

[μ•Œκ³ λ¦¬μ¦˜/Swift] μŠ€νƒ/큐 λ¬Έμ œν’€μ΄ - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ κΈ°λŠ₯개발, ν”„λ¦°ν„°, 닀리λ₯Ό μ§€λ‚˜λŠ” 트럭

μŠ€ν„°λ”” 3μ£Όμ°¨ μ±•ν„°μ˜€λ˜ "κ³ κΈ‰ 데이터 ꡬ쑰의 ν™œμš©" μ—μ„œ μŠ€νƒ, 큐, μˆœν™˜ 버퍼, μš°μ„ μˆœμœ„ 큐, μ—°κ²° λ¦¬μŠ€νŠΈμ— λŒ€ν•΄ ν•™μŠ΅ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€. 이와 κ΄€λ ¨λ˜μ„œ μ•Œκ³ λ¦¬μ¦˜ 문제 풀이λ₯Ό μ§„ν–‰ν–ˆκ³ , ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

jellysong.tistory.com

 

728x90
728x90