์ค์ํํธ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ์ฑ ์ 1์ฅ์ธ Playground ์ดํด๋ณด๊ธฐ์ ๋ํ ๋ด์ฉ์ ์ฝ๊ณ , ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
๐ค '์ด๋ ค์ ๋ ๋ถ๋ถ'
1. REPL ์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฒ์ ๋ค์ด๋ดค๋ค.
2. ArraySlice ์ ๋ํ ์ค์ต
โ๏ธ 'ํด๊ฒฐํ ๋ฐฉ๋ฒ'
1. REPL ์ ๋ํด ์์๋ดค๋ค.
- REPL ? Read - Eval - Print - Loop
- ๋จ์ผ ์ฌ์ฉ์ ์ ๋ ฅ(Read)์ ๋ํด ์ด๋ฅผ ํ๊ฐ(Eval)ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํ์ํค๋(Print) ๋จ์ํ ์ํธ์์ฉ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ด๋ค.
2. ArraySlice ์ ๋ํด Swift ๋ฌธ์๋ฅผ ์ฐพ์๋ดค๋ค.
- ์ผ์ ๋ฒ์์ ์ํ ๋ฐฐ์ด ์์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ, ๊ธฐ์กด ๋ฐฐ์ด์ ์ฐธ์กฐํ๋ค.
- ArraySlice ์ ์์์ ํญ์ 0 ์ด ์๋๋ค. ์์ ํ๊ฒ ์์๊ณผ ๋ ์ธ๋ฑ์๋ฅผ ์ ๊ทผํ๊ธฐ ์ํด์๋ startIndex, endIndex ์์ฑ์ ์ด์ฉํด๋ผ.
โ๏ธ 'ํต์ฌ ์์ฝ'
1. Swift ์ธ์ด์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ํ ์ดํด
2. ํฐ๋ฏธ๋์์ Swift REPL ์ธํฐํ์ด์ค ์ฌ์ฉํ๊ธฐ
- ๋ณ์ ์ ์ธ๊ณผ print ํจ์ ์ด์ฉ์ ๋ํ ์ค์ต
3. ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ํ ์ดํด
- ์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ๋ฐฐ์ด (Array) ๋ฅผ ์ด์ฉํ๊ธฐ ์ํ ์ ์ธ, ์์ ์ ๊ทผ, ๋ฐฐ์ด ์ฌ๋ผ์ด์ค, ์์ ์ถ๊ฐ, ์ญ์ ์ ๋ํ ์ค์ต
- ์ฐ๊ฒฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค Linked List ์ ๋ํ ์ค๋ช
๊ณผ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ํ ๋น๊ต, ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ตฌํ ๋ฐฉ์์ ๋ํ ์์ ์ฝ๋
4. Swift ๋ฐ์ดํฐ ํ์
์ ๋ํ ๋น๊ต
- Value type or Reference type
- Value type ์ ๊ฐ์ฒด๊ฐ ์ค์ง ํ๋์ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ๊ฐ์ ํ ๋นํ๊ฑฐ๋ ํจ์์ ์ ๋ฌํ ๋ ์ง๋๊ณ ์๋ ๊ฐ์ ๋ณต์ฌํ๋ค.
- Value type ์๋ ๊ตฌ์กฐ์ฒด(Structure)์ ์ด๊ฑฐํ(Enumertaions) ๋๊ฐ์ง ์ ํ์ด ์๋ค.
- Swift ์ ๋ฐ์ดํฐ ํ์
์ ๋๋ถ๋ถ ๊ตฌ์กฐ์ฒด์ด๋ค.
- Reference type ์ ๊ฐ์ ๋ณต์ฌํ์ง ์๊ณ ๊ณต์ ํ๋ ๋ฐ์ดํฐ ํ์
์ด๋ค. Class, Closure ๊ฐ ํฌํจ๋๋ค.
5. Swift ์ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์
๋ถ๋ฅ ์ฒด๊ณ๋ Named type ๊ณผ Compound type ์ด๋ค.
- Named type ์ ์ฌ์ฉ์๊ฐ ์ ์ํ ์ ์๋ ๋ฐ์ดํฐ ํ์
์ผ๋ก, Class, Strucutre, Enumerations, Protocol ์ด ์๋ค.
- Compound type ์ ๋ณ๋์ ์ด๋ฆ์ด ๋ถ์ฌ์ง์ง ์์ ํ์
์ผ๋ก function, type ์ด ์ ์๋์ด ์๋ค.
6. ๋ฐ์ดํฐ ๋ถ์
- ์ ๊ทผ์ ๋ถ์(asymptotic analysis) : ๋ฌดํ๋์ ๊ฐ๊น์ด ์
๋ ฅ๊ฐ์ ๋ถ์ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์
๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ํจ์์ ์คํ ์๊ฐ์ด ์ผ๋ง๋ ๊ธธ์ด์ง๋์ง์ ๋ํด ์์ผ์ ํ๋ค.
- Big-O ๋ ํจ์์ ์ ๊ทผ์ ๋ถ์์ ํํํ๋ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ ํํ์์ ์์๋ฅผ ๊ฐ์ถค์ผ๋ก์จ ์ข ๋ ๊ฐํธํ๊ฒ ์คํ ์๋๋ฅผ ์ธก์ ํ ์ ์๋ค.