# ๐จ๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋ (์์ฐ)
## ์คํฐ๋ ๋ชฉ์ /๋ชฉํ
- ์ฝ๋ฉ ํ
์คํธ๋ฅผ ํ์๋ก ํ๋ ๊ธฐ์
์ ๋๋นํ๊ธฐ ์ํด
- ์๊ณ ๋ฆฌ์ฆ/์ฝ๋ฉ ํ
์คํธ์ ์นํด์ง๊ธฐ ์ํด
- ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์ฌ๊ณ ๋ ฅ ํฅ์์ ์ํด
## ํ์ตํ ๋ด์ฉ
### ์๋ฃ๊ตฌ์กฐ
- array
- linked list
- **stack**
- **queue**
- deque
- tree
- graph
- BST
- heap
- hash table
### ์๊ณ ๋ฆฌ์ฆ
- big-O
- sorting ์ผ๋ฐ/๊ณ ๊ธ
- **simulation**
- **brute force**
- recursion
- iteration
- binary search
- **BFS/DFS**
- backtracking
- divide and conquer
- bit manipulation
- **two pointers**
- **sliding window**
- **dynamic programming**
## ๋ฌธ์ ํ์ด ํ๋ซํผ
- [ํ๋ก๊ทธ๋๋จธ์ค](https://programmers.co.kr/)
- ์ค์ ๊ธฐ์
๋ค์ด ์ฝ๋ฉ ํ
์คํธ ํ๋ซํผ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ค
- ๋ ๋ฒจ ๋ณ ๋์ด๋๋ก ๋๋์ด ์๋ค.
- ์นด์นด์ค ์ฝํ
๊ธฐ์ถ ๋ฌธ์ ๋ฅผ ๋ณด์ ํ๊ณ ์๋ค
- [LeetCode](https://leetcode.com/)
- ๋ฐฉ๋ํ ๋ฌธ์
- ๋ฌธ์ ๊ฐ ์์ด๋ก ๋์ด์์ผ๋ ์๊ณ ๋ฆฌ์ฆ ์นดํ
๊ณ ๋ฆฌ ๋ณ๋ก ์ ๋ถ๋ฅ๋์ด ์๋ค
- ๊ฐ๊ตญ ๊ณ ์๋ค์ ํ์ด ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ์ฌ ๊ฐ์ ํด๋ณผ ์ ์๋ค.
## ํ์ต ๋ฐฉ์
### ์๋
ผ์ด ํ์ํ ๋ถ๋ถ
- Swift๋ก ์ฝํ
์ค๋น??
- swift๋ฅผ ์ ์ธํ ์ธ์ด๋ก ์์ ๊ฐ๋ฅํ์ง๋ง, ์ข
์ข
swift๋ก ์ ํ์ด ๊ฑธ๋ ค์๋ ํ์ฌ๋ ์๋ค.
- ์คํฐ๋์ ๊ฐ์ ์ํต์ ์ํ ์ธ์ด ํต์ผ?
- ์๊ทธ๋ฃน์ผ๋ก ๋๋์ด์ ์๋ก ํ์ธ??
- ์ธ์์ด ๋ง๊ธฐ์ 3๊ฐ ๊ทธ๋ฃน์ผ๋ก ๋๋์ด ์ธ๋ถ ์ด์
- ์๊ทธ๋ฃน๋ณ ์ฃผ๊ฐ/์๊ฐ ๋ชฉํ ์ค์
- ex) 1์ฃผ์ฐจ Sorting ์๊ณ ๋ฆฌ์ฆ ํ์ต, 2์ฃผ์ฐจ brute-force ํ์ต
- ex) 1์ฃผ์ฐจ DFS ํ์ด, 2์ฃผ์ฐจ DP ํ์ด
- ๋์ด๋๋ณ ๊ทธ๋ฃน ๋ถ๋ฐ??
- (ํ์ต)๊ธฐ์ด๋ถํฐ ํ์ตํ๋ A๋ฐ
- ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊ธฐ์ด ํ์ต ๋ฐ ๊ธฐ๋ณธ ์ ํ์ ๋ํ ๋ฌธ์ ํ์ด
- (์ค๋น) ์ ํ๋ณ ๋ฌธ์ ํ์ด ๋ฐ๋ก ์งํํ๋ B๋ฐ
- ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋
์ง์์ด ์ ํ๋์ด์์์ ๊ฐ์
- ์ฝํ
์ค๋น ํํ๋ก ๋ฌธ์ ํ์ด๋ฅผ ๋ง์ดํ์ฌ ์ ํ์ ์ต์ํด์ง๋ ๊ฒ์ ๋ชฉํ๋ก ๋
- ๋ถ๋ฐ์์ B๋ฐ 1๋ช
์ด, A๋ฐ 2~3๋ช
๋ฉํฐ(?)์ฒ๋ผ ๋งก์์ ์งํ
- ๋ถ๋ฐํ๋ค๊ณ ํด์ ์๋ก ๋ฐ๋ก ํ๋ ๊ฒ์ X, ์๋ก ์ฝ๋์ ๋ํ ์ง์์๋ต์ ์์ ๋กญ๊ฒ, ํ์ต์ ์์ด์ ๋งํ๋ ๋ถ๋ถ์ ์๋ก ๊ณต์ ๋ฐ ํด๊ฒฐ์ ์ํ ํผ๋๋ฐฑ ์ฃผ๊ณ ๋ฐ๊ธฐ
---
- **๋งค์ฃผ ์์์ผ ์คํ 14:00~16:00** ์งํ ์์ (1~2์๊ฐ ์์ ์์ )
ํ์ต์ ์คํฐ๋ ๋ฐฉ์/๊ฐ์ธ ํ์ต ๋ฐฉ์์ ๋ณํํ๋ ค๊ณ ํฉ๋๋ค. ์คํฐ๋ ๋์๋ ๋ฏธ๋ฆฌ ํ์ตํด์จ ๊ฐ๋
๋ค์ ๋ํด ๊ถ๊ธํ์ ๋ฑ ์ด์ผ๊ธฐ๋ฅผ ๋๋ ๋ณด๊ณ ํ์ด๋ฅผ ๊ณต์ ํ๊ณ ์งํ ์ํฉ์ ์ ๊ฒํฉ๋๋ค.
#### ๋๋ต์ ์ธ ์ผ์ฃผ์ผ ์ค์ผ์ค
- ์คํฐ๋ ๋ฐฉ์
- ์์ตํด์จ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋
์ ๋ํด ์๊ฒฌ ๋๋๊ธฐ
- ๋ฏธ๋ฆฌ issue๋ก ๋ฑ๋กํ์ฌ ์ด์ผ๊ธฐ ์ฃผ์ ์ ํ
- ๋๋ค์ผ๋ก 2๋ช
์ฉ ๋ฌธ์ ํ์ด ๋ฐฉ๋ฒ ์ค๋ช
- ๊ฐ์ธ์ ์ผ๋ก ์ธ์๊น์๋(?), ๊ณต์ ํ๊ณ ์ถ์ ๋ฌธ์ ํ์ด ์ค๋ช
- ๊ฐ์ธ ํ์ต
- ๋งค์ผ 2๊ฐ์ ๋ฌธ์ ๋ฅผ ํ์ด (๋์ด๋๊ฐ ์ฌ๋ผ๊ฐ ๊ฒฝ์ฐ ๊ธฐ๊ฐ/๊ฐ์ ์กฐ์ )
- ์ผ์ฃผ์ผ = 10๋ฌธ์
- ํ๋ค๊ฐ ์ด๋ ค์ด ๋ถ๋ถ์ด ์์ ๊ฒฝ์ฐ ์๋ก ๊ณต์ ํ์ฌ ํจ๊ป ๋ฌธ์ ํด๊ฒฐ
- Github | oraganization repo์ ๋ณธ์ธ ํด๋์ ๋ฌธ์ ํ์ด(`.swift` ์๊ธฐ)
- ๋ฌธ์ ๋ ํด๋นํ๋ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ง๋ ๊ฒ์ผ๋ก ์ ํ
- (+) ์ถ๊ฐ ํ์ด ๋ฐ ํ์ต์ ์์ !
**๋ฌธ์ ํ์ด ๋ฑ๋ก ์์**
```swift
// ex. Sorting the Sentence.swift
// 1. Logic (ํ์ด ๋ฐฉ์)
// ~~
// 2. Solution (ํ์ด)
func solution() {
}
```
# ๊ท์น, ์ธ๋ถ ์ด์๋ฐฉ์์ด ์ ํด์ง๋ฉด ์ปค๋ฐ ๊ท์น, ๋ธ๋์น, ๊ฐ๋ณ ํด๋ ์์ฑํ ๊ฒ์~!
## ์ฐธ๊ณ ํ์ต ์๋ฃ
[Swift Algorithm Club](https://github.com/raywenderlich/swift-algorithm-club)
[์๊ณ ๋ฆฌ์ฆ ๊ฐ๋
- ๋ธ๋ก๊ทธ(Ries ๋ง๋ฒ์ ์ํผ๋ง๋ฆฌ์ค)](https://blog.naver.com/PostView.naver?blogId=kks227&logNo=220769859177&categoryNo=299&parentCategoryNo=0&viewDate=¤tPage=13&postListTopCurrentPage=&from=postList&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=13)
## ์งํ๋ฐฉ์
- 1/5๊น์ง๋ ๋ง๋ณด๊ธฐ
- ๋ฌธ์์ด (์นด์นด์ค)
- ์ ๊ท ํ์ (์นด์นด์ค)
- 1/12์ ์ง์ง! ์์!
- 5๋ฌธ์
---
# ๐ค Algorithm ์คํฐ๋ A๋ฐ
## ๐ค ์ฐธ์ฌ์
## ๋ชฉ์ฐจ
- [๊ณตํต Rule](#๐ค-๊ณตํต-rule)
- [์ปค๋ฆฌํ๋ผ](#๐ค-์ปค๋ฆฌํ๋ผ)
- [์ปค๋ฐ ์ปจ๋ฒค์
](#๐ค-์ปค๋ฐ-์ปจ๋ฒค์
)
- [๋ฌธ์ ํ์ด ๋ฑ๋ก ๋ฐฉ๋ฒ](#๐ค-๋ฌธ์ -ํ์ด-๋ฑ๋ก-๋ฐฉ๋ฒ)
- [branch ์ฌ์ฉ ๋ฐฉ๋ฒ](#๐ด-branch-์ฌ์ฉ-๋ฐฉ๋ฒ)
- [ํ์ผ๋ช
๊ท์น](#๐-ํ์ผ๋ช
-๊ท์น)
## ๐ค ๊ณตํต Rule
- ๋งค์ฃผ `์์์ผ` ์ ํด์ง ์๊ฐ์ ๋ชจ์ฌ์ ์คํฐ๋๋ฅผ ์งํํฉ๋๋ค
- ๋งค์ฃผ ์คํฐ๋ํ ๋ด์ฉ์ ์ ๋ฆฌํ์ฌ github์ ์ ๋ฆฌ ํ ๋์ค์ฝ๋์ ๋งํฌ๋ฅผ ๊ณต์ ํฉ๋๋ค.
- ๊ฐ์ ์ ์งํ๊ณ , ํ์ต ํจ๊ณผ๋ฅผ ๊ทน๋ํํ๊ธฐ ์ํด ๋งค์ผ ํ์ดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
## ๐ค ์ปค๋ฆฌํ๋ผ
## ๐ค ์ปค๋ฐ ์ปจ๋ฒค์
- `programmers` : programmers ํ์ด
- `leetcode` : leetcode ํ์ด
- `ds` : ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ตํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ
- `algo` : ์๊ณ ๋ฆฌ์ฆ์ ํ์ตํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ
- `chore` : ํด๋/ํ์ผ ๊ตฌ์กฐ ๋ณ๊ฒฝ
- `docs` : ๊ณตํต ๋ฌธ์ ์์ ๋ฐ ์ถ๊ฐ
## ๐ค ๋ฌธ์ ํ์ด ๋ฑ๋ก ๋ฐฉ๋ฒ
๐โโฌ ๋ฌธ์ ํ์ด ์ดํ github์ push!
(๋ณธ์ธ ๋ธ๋์น/๋ณธ์ธ ํด๋๋ง ์ง์ ์ ์ผ๋ก ์์ ํ์๋ฉด ๋ฉ๋๋ค!)
### ๐ด branch ์ฌ์ฉ ๋ฐฉ๋ฒ
1. ๋ณธ์ธ branch๋ก ์ด๋
2. ๋ณธ์ธ ํด๋๋ก ์ด๋
3. ๋ฌธ์ ํ์ด ํ๋ซํผ(programmers, leetcode etc) ํด๋ ๋ด์ ํด๋นํ๋ ๋ฌธ์ ํ์ด ํ์ผ ์ถ๊ฐ
4. ๋งค์ฃผ ์คํฐ๋ ์ด์ ์ main branch์ merge
### ๐ ํ์ผ๋ช
๊ท์น
- Programmers: `์ด๋ฆ_๋ฌธ์ ๋ช
.swift`
- ex) `[์ฐจ์ฐจ] ์ ๊ท ์์ด๋ ์ถ์ฒ.swift`
- LeetCode: `์ด๋ฆ_๋ฌธ์ ๋ช
.swift`
- ex) `[์ฐจ์ฐจ] Two Sums.swift`
- ํ์ผ ์์ฑ ์์
ex. `Sorting the Sentence.swift`
```swift
// Logic (ํ์ด ๋ฐฉ์)
// 1. ์คํ์ ์ฌ์ฉํ๋ค
// 2. popํด์ ์์๋ฅผ ๊บผ๋ธ๋ค
// 3. ~~
// Solution (ํ์ด)
func solution() {
// code
}
```