diff --git "a/developLog/algorithm-datastructure/_ Algorithm \352\264\200\353\240\250 bookmark_.md" "b/developLog/algorithm-datastructure/_ Algorithm \352\264\200\353\240\250 bookmark_.md"
new file mode 100644
index 0000000..edaf3b1
--- /dev/null
+++ "b/developLog/algorithm-datastructure/_ Algorithm \352\264\200\353\240\250 bookmark_.md"
@@ -0,0 +1,30 @@
+---
+icon: circle-bookmark
+---
+
+# Algorithm ๊ด๋ จ bookmark
+
+### ๐ ์๊ณ ๋ฆฌ์ฆ
+
+> ์กฐ๊ธ ๊ด์ฐฎ์ ๊ธฐ์
์ผ๋ก ๊ฐ๋ ค๋ฉด ํ์์ธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ฝ๋ฉํ
์คํธ
+
+* [์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ์ ๋ํ ๋ก๋๋งต](https://blog.yena.io/studynote/2018/11/14/Algorithm-Basic.html) ์ด๋ณด์ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ ์์ ๋ฐฉ๋ฒ ๋ฐ ์์
+* [์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ ๋ธ๋ก๊ทธ](https://velog.io/@matisse/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%ED%83%90%EC%83%89-%EC%A0%95%EB%A0%AC-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC) ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋จ ์ ๋ฆฌ ๋ธ๋ก๊ทธ
+* [์๊ณ ๋ฆฌ์ฆ ๋ฐ๋ณด ์ทจ์
์ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ](https://covenant.tistory.com/220) ์๊ณ ๋ฆฌ์ฆ ๋ฐ๋ณด์ ์ทจ์ค์ ์ํ ์ฝํ
๊ณต๋ถ๋ฐฉ๋ฒ
+* [์ฝ๋ฉํ
์คํธ ๋๋น ๋ฌธ์ ์ง with Baekjoon](https://github.com/tony9402/baekjoon) ์ฝ๋ฉํ
์คํธ ๋๋น ๋ฌธ์ ์ง์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ์ฒ์ ์์ ์ ์ฐธ๊ณ ํด์ผ ํ๋ ๋ธ๋ก๊ทธ๋ค๋ ๋์ ์๋ค.
+* [๋ง๋ฒ์ ์ํผ๋ง๋ฆฌ์ค ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ](https://m.blog.naver.com/PostList.nhn?blogId=kks227\&categoryNo=299\&logCode=0\&categoryName=%EB%8C%80%ED%9A%8C%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98) ์ ๋ช
ํ ์๊ณ ๋ฆฌ์ฆ ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
+* [์๊ณ ๋ฆฌ์ฆ ์ด๋ณด ๋ฒ์ด๋๊ธฐ 3๋จ๊ณ](https://claudiajkang.medium.com/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%B4%88%EB%B3%B4%EC%97%90%EC%84%9C-%EB%B2%97%EC%96%B4%EB%82%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%97%AC%EC%A0%95-1ffb6bdfec6b) ์๊ณ ๋ฆฌ์ฆ ๋ณด๋ณด ๋ฒ์ด๋๊ธฐ ์ํ ๋ฐฉ์์ ๋ํด ๋์ ์์
+* [๋ฐฑ์ค ์จ๋ผ์ธ ์ฌ์ดํธ๋ก ์๊ณ ๋ฆฌ์ฆ ์ด๋ณด๊ฐ ๊ณต๋ถํ๋ ๋ฐฉ๋ฒ](https://velog.io/@dragoocho/%EB%B0%B1%EC%A4%80-%EC%98%A8%EB%9D%BC%EC%9D%B8-%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A1%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95) ๋ฒจ๋ก๊ทธ ๊ธ์ธ๋ฐ ์ค์ฒ์ ์ธ ๋ฐฉ์ ์ ๋์์์
+* [ํ๋ก๊ทธ๋๋ฐ๊ณผ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฒ](https://seamless.tistory.com/96) ์๊ฐ ๋ง์ 2002๋
์ ๊ธฐ๊ณ ๋ ๊น์ฐฝ์ค ๋์ "์ด๋ป๊ฒ ๊ณต๋ถํ ๊น: ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํ ๊ณต๋ถ๋ก "์ด๋ผ๋ ๊ธฐ์ฌ ๋ด์ฉ ํฌ์คํ
๋์ด ์๋ ๋ธ๋ก๊ทธ ๊ธ
+* [์ด๊ธ-์ค๊ธ ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋ ์ปค๋ฆฌํ๋ผ ์ถ์ฒ (3๊ฐ์)](https://dev-dain.tistory.com/155) ์ด๊ธ ์๊ณ ๋ฆฌ์ฆ ์ปค๋ฆฌํ๋ผ์ ๋ํด ๋์ ์์
+* [์ํฐ๋ ๊ฐ๋ฐ์ ๋ฉด์ ์์ ์ ๋ณตํ๊ธฐ (1) - ์ฝ๋ฉ ํ
์คํธ ํธ](https://www.wanted.co.kr/events/22\_11\_s01\_b15) ์ํฐ๋ ์ฝ๋ฉ ํ
์คํธ ํธ
+
+ \
+
+
+### ๐ ์๊ณ ๋ฆฌ์ฆ ํ์ด ์ฌ์ดํธ
+
+* [๋ฐฑ์ค](https://www.acmicpc.net/)
+* [ํ๋ก๊ทธ๋๋จธ์ค](https://programmers.co.kr/)
+* [์ ์ฌ](https://jungol.co.kr/)
+* [solved](https://solved.ac/)
diff --git "a/developLog/algorithm-datastructure/algorithm/_ \352\265\254\355\230\204_.md" "b/developLog/algorithm-datastructure/algorithm/_ \352\265\254\355\230\204_.md"
new file mode 100644
index 0000000..6c23595
--- /dev/null
+++ "b/developLog/algorithm-datastructure/algorithm/_ \352\265\254\355\230\204_.md"
@@ -0,0 +1,298 @@
+# ๊ตฌํ
+
+ [๊ตฌํ ๋
ธ์
์ ๋ฆฌ ๋ฒ์ ](https://incredible-gem-98e.notion.site/04-eacbe1bf99664c9e89479eb609f7d0f7)
+
+
+
+### ๐ ์์ด๋์ด๋ฅผ ์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ตฌํ
+
+***
+
+> * ํผ์ง์ปฌ๋ก ์น๋ถํ๊ธฐ โ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ฅ์ํ๊ณ ์ฝ๋ ์์ฑ ์๋๊ฐ ๋น ๋ฅธ ์ฌ๋
+
+* **๊ตฌํ** : ๋จธ๋ฆฟ์์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ค์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ณผ์
+* ๊ตฌํ ๋ฌธ์ ์ ํ์ ๋ชจ๋ ๋ฒ์์ ์ฝ๋ฉ ํ
์คํธ ๋ฌธ์ ์ ํ์ ํฌํจํ๋ ๊ฐ๋
+* ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๊ฒฝํ์ ์ต์ํ๊ฒ ํ์
+
+#### ๐ ์๊ณ ๋ฆฌ์ฆ์ ํ ๋ ๊ณผ์
+
+1. ์๊ฐํด๋ธ ๋ฌธ์ ํ์ด ๋ฐฉ๋ฒ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ ํํ ๊ตฌํ
+2. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ์ ์ ํํ ์๊ณ ์์ด์ผ ํจ
+
+#### ๐ ๋ฌธ์ ํด๊ฒฐ ๋ถ์ผ์์ ๊ตฌํ ์ ํ์ ๋ฌธ์ ๋?
+
+1. ํ์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋ ๊ฒ์ ์ฌ์ฐ๋ ์์ค์ฝ๋๋ก๋ ์ฎ๊ธฐ๊ธฐ ์ด๋ ค์ด ๋ฌธ์
+2. ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ๋ฐ ์ฝ๋๊ฐ ์ง๋์น ๋งํผ ๊ธธ์ด์ง๋ ๋ฌธ์
+3. ์ค์ ์ฐ์ฐ์ ๋ค๋ฃจ๊ณ , ํน์ ์์์ ์๋ฆฌ๊น์ง ์ถ๋ ฅํด์ผ ํ๋ ๋ฌธ์
+4. ์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์์ ์ฌ์ฉํด์ผ ํ๋ ๋ฌธ์
+
+#### ๐ ๊ตฌํ์ ์ ํ
+
+1. **์์ ํ์** : `๋ชจ๋ ๊ฒฝ์ฐ์ ์`๋ฅผ ์ฃผ์ ์์ด ๋ค ๊ณ์ฐํ๋ ํด๊ฒฐ๋ฐฉ๋ฒ
+2. **์๋ฎฌ๋ ์ด์
** : ๋ฌธ์ ์์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ํ ๋จ๊ณ์ฉ `์ฐจ๋ก๋ก` ์ง์ ์ํ โ **๋ฐฉํฅ ๋ฒกํฐ**๊ฐ ์์ฃผ ํ์ฉ
+
+#### ๐ํ๋ ฌ
+
+* 2์ฐจ์ ๊ณต๊ฐ(๋ฐ๋ณต์ ์ผ๋ก ์บ๋ฆญํฐ ์ด๋ ๋ฌธ์ )
+* ์ด๊ณผ ํ์ด ์์
+
+| (0, 0) | (0,1) | (0, 2) | (0, 3) |
+| ------ | ------ | ------ | ------ |
+| (1, 0) | (1, 1) | (1, 2) | (1, 3) |
+| (2, 0) | (2, 1) | (2, 2) | (2, 3) |
+
+```python
+for i in range(5):
+ for j in range(5):
+ print('(', i, ',', j ')', end=' ')
+print()
+```
+
+```python
+# ๋ ๋ถ ์ ๋จ
+dx = [0, -1, 0, 1] # ์ธ๋ก์ถ ๊ธฐ์ค์ผ๋ก
+dy = [1, 0, -1, 0]
+
+# ํ์ฌ ์์น
+x, y =1, 2
+
+for i in range(4):
+ # ๋ค์ ์์น
+ nx = x + dx[i]
+ ny = y + dy[i]
+ print(nx, ny)
+```
+
+**๋ถ๊ฐ์ค๋ช
** : ๋์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด ์ด์ ์ฆ๊ฐํ์ง ์๊ณ ํ์ ์ฆ๊ฐํจ
+
+EX. (1, 0) โ (2, 0)\
+\
+
+
+### ๐ ๊ตฌํ ์ ๊ณ ๋ คํด์ผ ํ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ์ฌํญ
+
+***
+
+**1. C/C++์์ ๋ณ์์ ํํ ๋ฒ์** - ์ ์ํ int(4๋ฐ์ดํธ) < int๋ณด๋ค ํฐ long long(8๋ฐ์ดํธ) < `BigInteger(ํด๋์ค)` : **๊ฐ๋ณ์ **์ด๋ฉฐ, ์๋ฃํ์ ๋ฒ์๋ **์ ํ ์์** - ํ์ง๋ง c++์ ๊ฒฝ์ฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉ
+
+**2. ํ์ด์ฌ** - ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์๋ฃํ ์ง์ ํ ํ์ ์์, ๋งค์ฐ ํฐ ์์ ์ฐ์ฐ ๋ํ ๊ธฐ๋ณธ์ผ๋ก ์ง์ - ์ ์ํ ๋ณ์์ ์ฐ์ฐ ๋๋ฌธ์ ๊ณ ๋ฏผ No! - but, **์ค์ํ ๋ณ์**๋ ๋ค๋ฅธ ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํจ์ซ์์ ๋ฐ๋ผ์ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ์ํ๋ ๊ฐ์ด ๋์ค์ง ์์ ์ ์์
+
+3. ํ์ด์ฌ์์ `๋ฆฌ์คํธ`์ ๊ณ ๋ ค์ฌํญโจ
+ 1. ํ์ด์ฌ์์๋ ์ฌ๋ฌ ๊ฐ์ ๋ณ์ ์ฌ์ฉ์ ๋ฆฌ์คํธ ์ด์ฉ
+ 2. **๋ฉ๋ชจ๋ฆฌ ์ฌํญ** ๊ณ ๋ ค
+
+ * ์ฝ๋ฉํ
์คํธ์์ 128\~512MB๋ก **๋ฉ๋ชจ๋ฆฌ ์ ํ ์ผ๋**์ ๋๊ณ ํ์ด์ผ ํจ
+ * ํฌ๊ธฐ๊ฐ 1,000๋ง ์ด์ ๋ฆฌ์คํธ๊ฐ ์๋ค๋ฉด, ๋ฉ๋ชจ๋ฆฌ ์ฉ๋ ์ ํ์ผ๋ก ํ์ง ๋ชปํจ
+ * int ์๋ฃํ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
+
+ | ๋ฐ์ดํฐ์ ๊ฐ์(๋ฆฌ์คํธ์ ๊ธธ์ด) | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ |
+ | ---------------- | ------- |
+ | 1,000 | ์ฝ 4KB |
+ | 1,000,000 | ์ฝ 4MB |
+ | 10,000,000 | ์ฝ 40MB |
+ |
| |
+
+### ๐ ์ฑ์ ํ๊ฒฝ
+
+***
+
+* ์๊ฐ ์ ํ : 1์ด
+* ๋ฉ๋ชจ๋ฆฌ ์ ํ : 128MB
+
+ โ ํ์ด์ฌ์ ๊ฒฝ์ฐ **1์ด์ 2,000๋ง๋ฒ**์ ์ฐ์ฐ ์ํ ๊ฐ๋ฅํ ๊ฒ๋ง ์๋ฉด ๋จ
+* ์๊ฐ ์ ํ : 1์ด, ๋ฐ์ดํฐ์ ๊ฐ์ : 100๋ง๊ฐ
+
+ โ ์๊ฐ ๋ณต์ก๋ `O(NlogN)` ์ด๋ด์ ์๊ณ ๋ฆฌ์ฆ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํจ
+
+๐ก **TIP)** ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ ๋๋ `์๊ฐ ์ ํ`๊ณผ `๋ฐ์ดํฐ์ ๊ฐ์`๋ฅผ ๋จผ์ ํ์ธ ํ ๋ค, ์ด ๋ฌธ์ ๋ฅผ ์ด๋ ์ ๋์ `์๊ฐ๋ณต์ก๋`์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์์ฑํด์ผ ํ ์ ์์ ๊ฒ์ธ์ง ์์ธก
+
+\
+\
+
+
+### ๐ ๊ตฌํ ๋ฌธ์ ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ
+
+***
+
+* ์ฌ์ํ ์
๋ ฅ ์กฐ๊ฑด ๋ฑ ๋ฌธ์ ์์ ๋ช
์ํด์ฃผ๋ฉฐ, ๋ฌธ์ ์ ๊ธธ์ด ํฐ ํธ
+* ํ์ด์ฌ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํ ์ ์ข์ ์ ๋ค๋ฅธ ์ธ์ด์ ๋น๊ต
+
+| | ๊ตฌํ ๋์ด๋ | ํ๋ก๊ทธ๋จ ์คํ ์๊ฐ |
+| ----- | ------ | ---------- |
+| ํ์ด์ฌ | ์ฌ์ด ํธ | ๊ธด ํธ |
+| PyPy | ์ฌ์ด ํธ | ๋ค์ ์งง์ ํธ |
+| C/C++ | ์ด๋ ค์ด ํธ | ์งง์ ํธ |
+
+* ํ์ด์ฌ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์, ๊ทธ๋ํฝ ์ฒ๋ฆฌ ์ฅ์น(GPU)๋ฅผ ์ฐ๋ํ๋ฉฐ, ๋ฐ๋ณต์ ์ธ ํ๋ ฌ ๊ณ์ฐ์ ์๊ตฌํ๋ ๋ณต์กํ ์ํ ๋ฌธ์ ์ C์ธ์ด๋ก ์์ฑ๋ ํ์ด์ฌ ์ฝ์ด ์ํํธ์จ์ด ๋์
+* BUT, ์๊ณ ๋ฆฌ์ฆ ํ๊ฒฝ์์๋ GPU ์ฐ์ฐ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์์
+* ์๋ ์ฑ์ ๋ฐฉ์ ์ฝ๋ฉ ํ
์คํธ ํ๊ฒฝ์์๋ **PyPy3**๋ฅผ ์ง์ํ๋ ๊ณณ์ด ์ฆ๊ฐ
+
+ โ PyPy3๋ ํ์ด์ฌ 3์ ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ง์, ํ์ด์ฌ3๋ณด๋ค **์คํ ์๋๊ฐ ๋น ๋ฅด๋ค**
+* ํ์ด์ฌ ์ด์ฉ์ API ๊ฐ๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด๋๋ผ๋ ์๋์ ์ผ๋ก ๋ฌด๋ํ๊ฒ ๋์ฒ ๊ฐ๋ฅ\
+ \
+
+
+#### ์์ 4-1 ์ํ์ข์ฐ
+
+***
+
+> * ๋ฌธ์ p.110 - ์ฌํ์ A๋ N\*N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ ์ ์ ์์ - ๊ฐ์ฅ ์ผ์ชฝ ์ ์ขํ **(1,1)**, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ์ขํ\*\*(N, N)\*\* - ์์ ์ขํ๋ ํญ์ (1,1) ์,ํ,์ข,์ฐ ์ด๋ ๊ฐ๋ฅ - ๊ณํ์ : ํ๋์ ์ค์ ๋์ด์ฐ๊ธฐ ๊ธฐ์ค์ผ๋ก **L,R,U,D** ์ค ํ๋์ ๋ฌธ์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์ ํ ์์
+
+* L : ์ผ์ชฝ์ผ๋ก ํ ์นธ ์ด๋, R : ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋, U : ์๋ก ํ ์นธ ์ด๋, D : ์๋๋ก ํ ์นธ ์ด๋
+
+ * N\*N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ์ ๋ฒ์ด๋๋ ์์ง์์ ๋ฌด์
+ * ๊ณํ์๊ฐ ์ฃผ์ด์ก์ ๋ ์ฌํ์ A๊ฐ ์ต์ข
์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ
+
+ โ ์
๋ ฅ์กฐ๊ฑด
+
+ * ์ฒซ์งธ ์ค ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ N์ด ์ฃผ์ด์ง๋ค$(1\leq N \leq 100)$
+ * ๋์งธ ์ค์ ์ฌํ์ A๊ฐ ์ด๋ํ ๊ณํ์ ๋ด์ฉ์ด ์ฃผ์ด์ง๋ค ($1 \leq ์ด๋ํ์ \leq 100)$
+
+ โ ์ถ๋ ฅ์กฐ๊ฑด
+
+ * ์ฒซ์งธ ์ค์ ์ฌํ๊ฐ A๊ฐ ์ต์ข
์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ(X,Y)๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅ
+
+๐ ๋ฌธ์ ํด๊ฒฐ
+
+* ์๊ฐ ๋ณต์ก๋ : O(N) ์๊ฐ ๋ณต์ก๋๊ฐ ๋๋ํ ํธ
+* ์ผ๋ จ์ ๋ช
๋ น์ ๋ฐ๋ผ์ ๊ฐ์ฒด๋ฅผ `์ฐจ๋ก๋๋ก` ์ด๋์ํจ๋ค๋ ์ : **์๋ฎฌ๋ ์ด์
** ์ ํ
+* ์ฐธ๊ณ **for๋ฌธ**
+
+ * ํ์ด์ฌ์์ for๋ฌธ์ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ์ค์
+ * for\*\*\[๋ณ์1]\*\* in **\[๋ฌธ์์ด1, ๋ฆฌ์คํธ1, ํํ1]**:
+
+ ```python
+ arr = [1, 2, 3, 4, 5]
+ for i in arr:
+ print(i)
+
+ ```
+
+```python
+# N์ ์
๋ ฅ๋ฐ๊ธฐ
+n = int(input())
+x, y = 1, 1 # ํ์ฌ ์์น
+plans = input().split()
+
+# L,R,U,D ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์ด๋ ์ด๋, **๋ฐฉํฅ ๋ฒกํฐ**
+dx = [0,0,-1,1] # x์ขํ๋ ์ข์ฐ
+dy = [-1,1,0,0] # y์ขํ๋ ์์๋
+move_types=['L', 'R', 'U', 'D']
+
+# ์ด๋ ๊ณํ์ ํ๋์ฉ ํ์ธ
+for plan in plans :
+ # ์ด๋ ํ ์ขํ ๊ตฌํ๊ธฐ
+ for i in range(len(move_types)):
+ if plan == move_types[i]:
+ nx = x + dx[i]
+ ny = y + dy[i]
+ # ์์ญ์ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ ๋ฌด์
+ if nx<1 or ny<1 or nx>n or ny>n:
+ countinue # ์ค๊ฐ์ ๋ฉ์ถ๊ณ ์ฒ์์ผ๋ก ๋์๊ฐ์
+ # ์ด๋ ์ํ
+ x, y = nx, ny
+
+print(x, y)
+```
+
+โ ์
๋ ฅ๋ฐ์ ๊ฒ ๋ฌด์์ธ์ง ์๊ฐํด๋ณด๊ณ ์ฐจ๋ก๋ก ์ํํด ๋๊ฐ๊ธฐ
+
+#### ๐ ์์ 4-2 ์๊ฐ
+
+***
+
+* ๋ฌธ์ p.113
+
+ * ์ ์ N์ด ์
๋ ฅ๋๋ฉด 00์ 00๋ถ 00์ด๋ถํฐ N์ 59๋ถ 59์ด๊น์ง์ ๋ชจ๋ ์๊ฐ ์ค 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ
+
+ โ ์
๋ ฅ์กฐ๊ฑด
+
+ * ์ฒซ์งธ ์ค์ ์ ์ N์ด ์
๋ ฅ๋๋ค$(0 \leq N \leq 23)$
+
+ โ ์ถ๋ ฅ์กฐ๊ฑด
+
+ * 00์ 00๋ถ 00์ด๋ถํฐ N์ 59๋ถ 59์ด๊น์ง์ ๋ชจ๋ ์๊ฐ ์ค 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ
+
+๐ ๋ฌธ์ ํด๊ฒฐ
+
+* ๋ชจ๋ ์๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ํ๋์ฉ ๋ชจ๋ ์
+* ๋ชจ๋ ๊ฒฝ์ฐ์ ์๊ฐ 100,000๊ฐ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด ์ฐ์ฐ ์ด์ฉํด๋ ์๊ฐ ์ ํ 2์ด์์ ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
+* ๋จ์ํ ์๊ฐ์ 1์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ํ์ธ โ **์์ ํ์** ์ ํ(๋นํจ์จ์ ์ด๋ผ ๋ฐ์ดํฐ ๊ฐ์๊ฐ ํฐ ๊ฒฝ์ฐ ์๋ ์ํ ์ ์์)
+* ๊ฒฝ์ฐ์ ์ \*\*24(์๊ฐ)_60(๋ถ)60(์ด) โ `3์ค ๋ฐ๋ณต๋ฌธ` ์ด์ฉ_
+* `๋ฌธ์์ด`๋ก ๋ฐ๊ฟ์ ํ์ธ โ EX. 03์20๋ถ23์ด๋ผ๋ฉด โ032023โ๋ก ๋ง๋ค์ด์ ํ์ธ
+* ์ฐธ๊ณ str
+
+ **ํ์ด์ฌ ๋ฌธ์์ด ๋ณํ - str()**
+
+```python
+# H๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ
+h = int(input())
+
+count = 0
+
+# h๋ถํฐ 1์ฉ ์ฆ๊ฐ
+for i in range(h + 1):
+ for j in range(60): # ์
๋ ฅ๋ฐ๋ ๊ฒ์ ์๊ฐ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ ๋ถ, ์ด๋ 0๋ถํฐ 60๊น์ง๋ก **๋ฒ์ ์ค์ ๋ฐ ์ฆ๊ฐ ํ๊ฒ**
+ for k in range(60):
+ # ๋งค ์๊ฐ ์์ 3์ด ํฌํจ๋์ด ์๋ค๋ฉด ์นด์ดํธ ์ฆ๊ฐ
+ if '3' in str(i) + str(j) + str(k): # ์๊ฐ์ **๋ฌธ์์ด ๋ฐ๊พผ ๋ค์** ๋ฌธ์์ด์ '3'์ด ํฌํจ๋๋์ง ํ์ธ
+ count+=1
+
+print(count)
+```
+
+\
+\
+
+
+### ๐ ์ค์ ๋ฌธ์ ์์ค์ ๋์ดํธ
+
+***
+
+> * ๋ฌธ์ p.115 - ์์ค ์ ์ 8\*8 ์ขํ ํ๋ฉด - ๋์ดํธ๋ ๋ง์ ํ๊ณ ์๊ธฐ์ ์ด๋์, L์ ํํ๋ก๋ง ์ด๋ ๊ฐ๋ฅ, ์ ์ ๋ฐ์ผ๋ก ์ด๋ ๋ถ๊ฐ 1. ์ํ์ผ๋ก ๋ ์นธ ์ด๋ํ ๋ค์ ์์ง์ผ๋ก ํ ์นธ ์ด๋ 2. ์์ง์ผ๋ก ๋ ์นธ ์ด๋ํ ๋ค์ ์ํ์ผ๋ก ํ ์นธ ์ด๋
+
+```
+โ ์
๋ ฅ์กฐ๊ฑด
+
+- ์ฒซ์งธ ์ค์ 8*8 ์ขํ ํ๋ฉด์์์ ํ์ฌ ๋์ดํธ๊ฐ ์์นํ ๊ณณ์ ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด ์
๋ ฅ๋๋ค. ์
๋ ฅ ๋ฌธ์๋ a1์ฒ๋ผ ์ด๊ณผ ํ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค
+
+โ ์ถ๋ ฅ์กฐ๊ฑด
+
+- ์ฒซ์งธ ์ค์ ๋์ดํธ๊ฐ ์ด๋ํ ์ ์๋ ๊ฒฝ์ฐ์ ์ ์ถ๋ ฅ
+```
+
+๐ ๋ฌธ์ ํด๊ฒฐ
+
+* ๋์ดํธ๊ฐ ์ด๋ํ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ํ๋์ฉ ํ์ธํ์ฌ ์ด๋
+* ๋ค๋ง, 8\*8ํ๋ฉด์ ๋ฒ์ด๋์ง ์๋๋ก ๊ผผ๊ผผํ ๊ฒ์ฌ
+* ๋์ดํธ ์ด๋ ๊ฒฝ๋ก๋ฅผ steps ๋ณ์์ ๋ฃ๋๋ค๋ฉด
+
+```python
+steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (2, 1), (1, 2), (-1, 2), (-2, 1)]
+```
+
+* <์ฝ๋>
+
+```python
+# ํ์ฌ ๋์ดํธ ์์น ๋ฐ๊ธฐ
+input_data = input()
+# ๋ ๋ฒ์งธ ์์น์ ์ซ์๋ฅผ ๋ฐ๊พผ ๊ฒ์ด ํ
+row = int(input_data[1])
+# ๋ฌธ์๋ก ๋ค์ด์จ ๊ฐ์ ์์คํค ์ฝ๋๋ก ๋ฐ๊พธ๊ณ
+column = int(ord(input_data[0]))-int(ord('a')) + 1
+
+# ๋์ดํธ๊ฐ ์ด๋ํ ์ ์๋ 8๊ฐ์ง ๋ฑกํฅ ์ ์, dx, dy์ฌ์ฉํด๋ ๊ฐ๋ฅ
+steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (2, 1), (1, 2), (-1, 2), (-2, 1)]
+
+# 8๊ฐ์ง ๋ฐฉํฅ์ ๋ํ์ฌ ๊ฐ ์์น๋ก ์ด๋์ด ๊ฐ๋ฅํ์ง ํ์ธ
+result = 0
+for step in steps:
+ # ์ด๋ํ๊ณ ์ ํ๋ ์์น ํ์ธ
+ next_row = row + step[0]
+ next_column = column + step[1]
+ # ํด๋น ์์น๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ค๋ฉด ์นด์ดํธ ๋ค์ด
+ if next_row >=1 and next_row < =8 and next_column >=1 and next_column <= 8:
+ result +=1
+
+print(result)
+```
diff --git "a/developLog/algorithm-datastructure/algorithm/_ \352\267\270\353\236\230\355\224\204 \354\225\214\352\263\240\353\246\254\354\246\230_.md" "b/developLog/algorithm-datastructure/algorithm/_ \352\267\270\353\236\230\355\224\204 \354\225\214\352\263\240\353\246\254\354\246\230_.md"
new file mode 100644
index 0000000..3a49f97
--- /dev/null
+++ "b/developLog/algorithm-datastructure/algorithm/_ \352\267\270\353\236\230\355\224\204 \354\225\214\352\263\240\353\246\254\354\246\230_.md"
@@ -0,0 +1,186 @@
+# ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ
+
+> ๐ซ ๋น์ ํ ๊ตฌ์กฐ๋ ์ผ๋ ฌ๋ก ๋์ดํ์ง ์๊ณ ์๋ฃ๊ตฌ์กฐ๋ ๊ด๊ณ๊ฐ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.
+
+## ๊ทธ๋ํ
+
+### ๐ ๊ฐ๋
+
+* ๋
ธ๋(์ ์ )์ ๊ฐ์ ์ผ๋ก ํํ
+
+![](https://velog.velcdn.com/images/prettylee620/post/d133edf3-7d66-4e4d-8314-b6248f510270/image.png)
+
+#### ์ ์ ๊ณผ ๊ฐ์
+
+> ์ด๋ ํ ๊ณณ์์ ์ด๋ ํ ๊ณณ์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ํตํด ๊ฐ๋ค๊ณ ํ์ ๋
+
+* ์ ์ : ์ด๋ ํ ๊ณณ, ์ถ๋ฐ์ง์ ๋์ฐฉ์ง
+* ๊ฐ์ : ๋ฌด์ธ๊ฐ๊ฐ ๋๋ฉฐ, ๊ฐ๋ ๊ธธ
+
+#### ๋จ๋ฐฉํฅ ๊ฐ์
+
+* ์ง์ฌ๋ : ์ผ๋ฐฉ์ ๊ฐ์
+* ์ฌ๋ : ์๋ฐฉํฅ ๊ฐ์
+
+### ๐ ๊ทธ๋ํ์ ๊ธฐ๋ณธ๊ตฌ์กฐ
+
+* **๊ทธ๋ํ ํ์**์ด๋? ํ๋์ ๋
ธ๋๋ฅผ ์์์ผ๋ก ๋ค์์ ๋
ธ๋์ ๋ฐฉ๋ฌธํ๋ ๊ฒ
+* ๋ ๋
ธ๋๋ `์ธ์ ํ๋ค` = ๋ ๋
ธ๋๊ฐ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค
+
+### ๐ ์ฉ์ด
+
+> 8/23 ๊ตญ๋น์์ ๋ฐฐ์ด ๋ด์ฉ ์ถ๊ฐ
+
+* ๋
ธ๋ (Node): ์์น, ์ ์ (Vertex)
+* ๊ฐ์ (Edge): ์์น ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ํ ์ . ๋
ธ๋๋ฅผ ์ฐ๊ฒฐํ ์ (link ๋๋ branch)
+* ์ธ์ ์ ์ (Adjacent Vertex) : ๊ฐ์ ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋ ์ ์ (๋๋ ๋
ธ๋)
+* ์ ์ ์ ์ฐจ์ (Degree): ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์ ํ๋์ ์ ์ ์ ์ธ์ ํ ์ ์ ์ ์
+* ์ง์
์ฐจ์ (In-Degree): ๋ฐฉํฅ ๊ทธ๋ํ์์ ์ธ๋ถ์์ ์ค๋ ๊ฐ์ ์ ์
+* ์ง์ถ ์ฐจ์ (Out-Degree): ๋ฐฉํฅ ๊ทธ๋ํ์์ ์ธ๋ถ๋ก ํฅํ๋ ๊ฐ์ ์ ์
+* ๊ฒฝ๋ก ๊ธธ์ด (Path Length): ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์ฌ์ฉ๋ ๊ฐ์ ์ ์
+* ๋จ์ ๊ฒฝ๋ก (Simple Path): ์ฒ์ ์ ์ ๊ณผ ๋ ์ ์ ์ ์ ์ธํ๊ณ ์ค๋ณต๋ ์ ์ ์ด ์๋ ๊ฒฝ๋ก
+* ์ฌ์ดํด (Cycle): ๋จ์ ๊ฒฝ๋ก์ ์์ ์ ์ ๊ณผ ์ข
๋ฃ ์ ์ ์ด ๋์ผํ ๊ฒฝ์ฐ
+
+### ๐ ๊ทธ๋ํ์ ํํ๋ฒ 2๊ฐ์ง
+
+#### 1. **์ธ์ ํ๋ ฌ(Adjacency Matrix)** : **2์ฐจ์ ๋ฐฐ์ด**๋ก ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํํ๋ ๋ฐฉ์
+
+* 2์ฐจ์ ๋ฐฐ์ด์ ๊ฐ ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋ ํํ๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฉ์
+* `2์ฐจ์ ๋ฆฌ์คํธ`
+* ์ฐ๊ฒฐ๋์ด ์์ง ์์ ๋
ธ๋๋ผ๋ฆฌ ๋ฌดํ์ ๋น์ฉ์ด๋ผ๊ณ ์์ฑ
+
+1. ์ฅ์
+
+* **์๋ ์ธก๋ฉด** : ํน์ ํ ๋ ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ์๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ **์๋๊ฐ ์ธ์ ๋ฆฌ์คํธ๋ณด๋ค ๋น ๋ฅด๋ค โ ๊ทธ๋ํ ๋ด์ ๋
ธ๋ ๊ฐ ๊ด๊ณ๋ฅผ ์์ ์๊ฐ(O(1))์ ํ์ธ ๊ฐ๋ฅ โ ์ด์ : ๋ชจ๋ ๊ด๊ณ๋ฅผ ์ ์ฅํ๊ณ ์์ผ๋๊น**
+* ๊ฐ์ ์ ์ ๋ฌด์ ๊ฐ์ค์น๋ฅผ ์ ์ฅํ๊ธฐ์ ์ ์ฉ
+ * ์ด์ : ๋ชจ๋ ๊ด๊ณ ์ ์ฅํ๋๊น
+* ์์ ๋ฐ์ง ๊ทธ๋ํ์์ ๋ฉ๋ชจ๋ฆฌ ๋ ํจ์จ์ ์ฌ์ฉ ๊ฐ๋ฅ
+ * **๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋๊ฐ ์์**: ์์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ ์ธ์ ํ๋ ฌ์ ๋
ธ๋ ์์ ๋นํด ์๋์ ์ผ๋ก ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ
+ * **๊ฐ์ ๊ฐ์๊ฐ ์๋์ ์ผ๋ก ๋ง์**: `๋ฐ์ง ๊ทธ๋ํ`๋ **๊ฐ์ ์ด ๋
ธ๋ ์์ ๋นํด ๋ง์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ**๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ธ์ ๋ฆฌ์คํธ๋ ๊ฐ ๋
ธ๋๋ง๋ค ์ฐ๊ฒฐ๋ ๋
ธ๋์ ๋ฆฌ์คํธ๋ฅผ ์ ์งํด์ผ ํ๋ฏ๋ก, ๊ฐ์ ์ด ๋ง์ ๊ฒฝ์ฐ์๋ ์ด ๋ฆฌ์คํธ๋ค์ ํฌ๊ธฐ๊ฐ ์ปค์ ธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ์ฆ๊ฐํจ ์ด์ ๋ฌ๋ฆฌ ์ธ์ ํ๋ ฌ์ ๊ฐ์ ์ ์ ๋ฌด๋ง ํ์ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ ๊ฐ์์๋ ๋ฌด๊ดํ๊ฒ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ผ์
+ * **๋น ๋ฅธ ๊ฐ์ ์กฐํ**: ์ธ์ ํ๋ ฌ์ ๊ฐ์ ์ ์ ๋ฌด๋ฅผ ์์ ์๊ฐ(O(1))์ ํ์ธํ ์ ์๋ค. ์์ ๋ฐ์ง ๊ทธ๋ํ์์๋ ์ด๋ฐ ๊ฐ์ ์กฐํ๊ฐ ๋ ํจ์จ์
+
+2. ๋จ์
+
+* **๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด** : ๋ชจ๋ ๊ด๊ณ๋ฅผ ์ ์ฅํ๋ฏ๋ก ๋
ธ๋ ๊ฐ์๊ฐ ๋ง์์๋ก ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
+
+```python
+INF = 999999999 # ๋ฌดํ์ ๋น์ฉ ์ ์ธ(์ฐ๊ฒฐ๋์ด ์์ง ์์ ๋
ธ๋)
+
+# 2์ฐจ์ ํ์คํธ๋ฅผ ์ด์ฉํด ์ธ์ ํ ํ๋ ฌ ํํ
+graph = [
+ [0, 7, 5],
+ [7, 0, INF],
+ [5, INF, 0]
+]
+
+print(graph)
+```
+
+**\[๊ฒฐ๊ณผ์ฐฝ]**
+
+![](https://velog.velcdn.com/images/prettylee620/post/e7cde8b5-5430-452b-af54-28e547a9fe2a/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/54457ecb-fb97-42a2-a59b-c807f112d0be/image.png)
+
+#### 2. **์ธ์ ๋ฆฌ์คํธ(Adjacency List)** : ๋ฆฌ์คํธ๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํํ๋ ๋ฐฉ์
+
+* C++ Java์ ๊ฒฝ์ฐ, ๋ณ๋์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฅ์ ์ํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต
+* ํ์ด์ฌ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์๋ฃํ์ธ ๋ฆฌ์คํธ ์๋ฃํ์ด `append()`์ ๋ฉ์๋ ์ ๊ณต
+
+ โ ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ธฐ๋ฅ์ ๋ชจ๋ **๊ธฐ๋ณธ**์ผ๋ก ์ ๊ณต
+* ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ๊ทธ๋ํ๋ฅผ ํํํ๊ณ ์ ํ ๋์๋ `2์ฐจ์ ๋ฆฌ์คํธ` ์ด์ฉํ๋ฉด ๋จ
+
+1. ์ฅ์
+
+* **๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด** : ์ฐ๊ฒฐ๋ ์ ๋ณด\[๋
ธ๋]๋ง์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ธ์ ํ๋ ฌ๋ฐฉ์๋ณด๋ค ํจ์จ์
+* ๊ทธ๋ํ์ ํฌ๊ธฐ๋ ๋
ธ๋ ์์ ๋ฌด๊ดํ๊ฒ ์๋์ ์ผ๋ก ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ
+* ๊ทธ๋ํ ํ์ ์ ์ฐ๊ฒฐ๋ ๋
ธ๋ ๋น ๋ฅด๊ฒ ์ํ ๊ฐ๋ฅ
+* ํฌ์ ๊ทธ๋ํ์์ ์ ํฉํจ
+ * `ํฌ์ ๊ทธ๋ํ`๋ ๊ทธ๋ํ ๋ด์ ๊ฐ์ ์ ์๊ฐ ์๋์ ์ผ๋ก **์ ์** ๊ฒฝ์ฐ
+ * **๋ฉ๋ชจ๋ฆฌ ์ ์ฝ**: ์ธ์ ๋ฆฌ์คํธ๋ ๊ฐ ๋
ธ๋๋ง๋ค ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ์ฐ๊ฒฐ๋์ง ์์ ๋
ธ๋ ์ฌ์ด์๋ ๊ณต๊ฐ์ด ๋ญ๋น๋์ง ์์
+ * **๋น ๋ฅธ ๊ฐ์ ์กฐํ**: ์ธ์ ๋ฆฌ์คํธ๋ ๋
ธ๋๋ง๋ค ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค์ ์ํํ๋ฏ๋ก ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค์ ๋ํ ์กฐํ๊ฐ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง๋ค. ํฌ์ ๊ทธ๋ํ์์๋ ๋
ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ด ์ ์ด์ ์ธ์ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ๋ ๋
ธ๋๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํ ๊ฐ๋ฅ
+ * **์๊ฐ ๋ณต์ก๋ ๊ฐ์ **: ์ธ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํฌ์ ๊ทธ๋ํ์์ ๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค. ๋
ธ๋ ๊ฐ์ ๊ด๊ณ๊ฐ ์ ์ด์ ํ์์ ์ค์งํ๋ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง๊ธฐ ๋๋ฌธ
+
+2. ๋จ์
+
+* **์๋ ์ธก๋ฉด** : ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ํ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํน์ ํ ๋ ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ์๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ **์๋๊ฐ ๋๋ฆฌ๋ค.**
+
+3. ์์
+
+* ํด์
+ * \*\*`graph[0]`\*\*์ ์ ์ฅ๋ ์ ๋ณด : ๋
ธ๋ 0๊ณผ ์ฐ๊ฒฐ๋ ๋
ธ๋ 1, ๊ฑฐ๋ฆฌ 7 + ๋
ธ๋ 0๊ณผ ์ฐ๊ฒฐ๋ ๋
ธ๋ 2, ๊ฑฐ๋ฆฌ 5
+ * \*\*`graph[1]`\*\*์ ์ ์ฅ๋ ์ ๋ณด : ๋
ธ๋ 1๊ณผ ์ฐ๊ฒฐ๋ ๋
ธ๋ 0 ์ ์ฅ
+ * \*\*`graph[2]`\*\*์ ์ ์ฅ๋ ์ ๋ณด : ๋
ธ๋ 2์ ์ฐ๊ฒฐ๋ ๋
ธ๋ 0๋ง์ด ์ ์ฅ
+
+```python
+# ํ(Row)์ด 3๊ฐ์ธ 2์ฐจ์ ๋ฆฌ์คํธ๋ก ์ธ์ ๋ฆฌ์คํธ ํํ
+graph = [[] for _ in range(3)]
+
+# ๋
ธ๋ 0์ ์ฐ๊ฒฐ๋ ๋
ธ๋ ์ ๋ณด ์ ์ฅ(์ฐ๊ฒฐ๋ ๋
ธ๋, ๊ฑฐ๋ฆฌ)
+graph[0].append((1, 7))
+graph[0].append((2, 5))
+
+# ๋
ธ๋ 1์ ์ฐ๊ฒฐ๋ ๋
ธ๋ ์ ๋ณด ์ ์ฅ
+graph[1].append((0, 7))
+
+# ๋
ธ๋ 2์ ์ฐ๊ฒฐ๋ ๋
ธ๋ ์ ๋ณด ์ ์ฅ
+graph[2].append((0, 5))
+
+print(graph)
+```
+
+* ์ฝ๋ ์๊ฐํ ์ฌ์ง
+
+![](https://velog.velcdn.com/images/prettylee620/post/74c15462-583a-4c68-9bc6-395e3b6122ec/image.png)
+
+**\[๊ฒฐ๊ณผ์ฐฝ]**
+
+![](https://velog.velcdn.com/images/prettylee620/post/7fb6d339-7edf-4fec-99dc-e9421513793d/image.png)
+
+### ๐ ๊ทธ๋ํ (Graph) ์ข
๋ฅ
+
+#### ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ (Undirected Graph)
+
+* ๋ฐฉํฅ์ด ์๋ ๊ทธ๋ํ
+* ๊ฐ์ ์ ํตํด, ๋
ธ๋๋ ์๋ฐฉํฅ์ผ๋ก ๊ฐ ์ ์์
+
+#### ๋ฐฉํฅ ๊ทธ๋ํ (Directed Graph)
+
+* ๊ฐ์ ์ ๋ฐฉํฅ์ด ์๋ ๊ทธ๋ํ
+
+#### ๊ฐ์ค์น ๊ทธ๋ํ (Weighted Graph) ๋๋ ๋คํธ์ํฌ (Network)
+
+* ๊ฐ์ ์ ๋น์ฉ ๋๋ ๊ฐ์ค์น๊ฐ ํ ๋น๋ ๊ทธ๋ํ
+
+#### ์ฐ๊ฒฐ ๊ทธ๋ํ (Connected Graph)
+
+* ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ์๋ ๋ชจ๋ ๋
ธ๋์ ๋ํด ํญ์ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ
+
+#### ๋น์ฐ๊ฒฐ ๊ทธ๋ํ (Disconnected Graph)
+
+* ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์ ํน์ ๋
ธ๋์ ๋ํด ๊ฒฝ๋ก๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ
+
+#### ์ฌ์ดํด (Cycle)
+
+* ๋จ์ ๊ฒฝ๋ก์ ์์ ๋
ธ๋์ ์ข
๋ฃ ๋
ธ๋๊ฐ ๋์ผํ ๊ฒฝ์ฐ
+
+#### ๋น์ํ ๊ทธ๋ํ (Acyclic Graph)
+
+* ์ฌ์ดํด์ด ์๋ ๊ทธ๋ํ
+
+#### ์์ ๊ทธ๋ํ (Complete Graph)
+
+* ๊ทธ๋ํ์ ๋ชจ๋ ๋
ธ๋๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๊ทธ๋ํ
+
+### ๐ ๊ทธ๋์ ์ด๋์ ์ฐ๋?\[chat gpt์ ๋ต๋ณ]
+
+> ์ฆ, ๊ทธ๋ํ๋ ๊น์ด ์ฐ์ ํ์๊ณผ ๋๋น ์ฐ์ ํ์์ ํ๊ธฐ ์ํ ๋ชฉ์
+
+1. **์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ**: ๋ ๋
ธ๋ ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ, ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
+2. **์ ์ฅ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ**: ๊ทธ๋ํ ๋ด์ ๋ชจ๋ ๋
ธ๋๋ฅผ ํฌํจํ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ด ํฌํจ๋ฉ๋๋ค.
+3. **ํ๋ฆ ๋คํธ์ํฌ ์๊ณ ๋ฆฌ์ฆ**: ๋คํธ์ํฌ์ ํ๋ฆ์ ์ต์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ํฌ๋-ํ์ปค์จ ์๊ณ ๋ฆฌ์ฆ์ด ๋ํ์ ์
๋๋ค.
+4. **๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ**: ๊ทธ๋ํ ๋ด์ ๋ชจ๋ ๋
ธ๋๋ฅผ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๊น์ด ์ฐ์ ํ์(DFS)๊ณผ ๋๋น ์ฐ์ ํ์(BFS)์ด ํฌํจ๋ฉ๋๋ค.
+5. **์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ**: ๋ฐฉํฅ ๊ทธ๋ํ์์ ์์๊ฐ ์๋ ์์
์ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค.
+6. **์ต์ ์ ์ฅ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ**: ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์์ ๋ชจ๋ ๋
ธ๋๋ฅผ ํฌํจํ๋ ์ ์ฅ ํธ๋ฆฌ ์ค ๊ฐ์ค์น์ ํฉ์ด ์ต์์ธ ํธ๋ฆฌ๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ด ์์ต๋๋ค.
+7. **๊ฒฝ๋ก ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ**: ๋ ๋
ธ๋ ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๊น์ด ์ฐ์ ํ์(DFS)์ด๋ ๋๋น ์ฐ์ ํ์(BFS)์ ํ์ฉํ์ฌ ๊ตฌํ๋ ์ ์์ต๋๋ค.
+8. **๋คํธ์ํฌ ํ๋ก์ฐ ์๊ณ ๋ฆฌ์ฆ**: ํน์ ์กฐ๊ฑดํ์์ ๋คํธ์ํฌ ๋ด์์ ์ ๋ณด๋ ๋ฌผ๋์ ํ๋ฆ์ ์ต์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค.
diff --git "a/developLog/algorithm-datastructure/algorithm/_ \352\267\270\353\246\254\353\224\224_.md" "b/developLog/algorithm-datastructure/algorithm/_ \352\267\270\353\246\254\353\224\224_.md"
new file mode 100644
index 0000000..39b6515
--- /dev/null
+++ "b/developLog/algorithm-datastructure/algorithm/_ \352\267\270\353\246\254\353\224\224_.md"
@@ -0,0 +1,350 @@
+# ๊ทธ๋ฆฌ๋
+
+ [๊ทธ๋ฆฌ๋ ์ ๋ฆฌ ๋
ธ์
๋ฒ์ ](https://incredible-gem-98e.notion.site/02-Big-O-e6f9ea423f4a42d183b99a138d645913)
+
+
+
+### ๐ ๋น์ฅ ์ข์ ๊ฒ์ ์ ํํ๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
+
+***
+
+* ๋จ์ํ์ง๋ง ๊ฐ๋ ฅํ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
+* `ํ์๋ฒ` ์๊ณ ๋ฆฌ์ฆ : ํ์ฌ ์ํฉ์์ ์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ
+* ์ฐฝ์๋ ฅ์ ์๊ตฌ, ๋จ์ํ ํ์ฌ ์ํฉ์์ ๊ฐ์ฅ ์ข์ ๋ณด์ด๋ ๊ฒ๋ง ์ ํํด๋ ok
+* ์๊ฐ ๊ฐ์ฅ ์ข์ ๋ณด์ด๋ ๊ฒ์ ์ ํ, ํ์ฌ์ ์ ํ์ด **๋์ค์ ๋ฏธ์น ์ํฅ ๊ณ ๋ ค No!**
+* **์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ**๊ณผ ์ง์ ์ด๋ค์ ์ถ์ โ โ๊ฐ์ฅ ํฐ ์์๋๋กโ์ ๊ฐ์ ๊ธฐ์ค ์ ์
+
+#### ๐ ์ฝํ
์์ ๋ง๋๊ฒ ๋ ์๊ณ ๋ฆฌ์ฆ ์ ํ
+
+1. ์ฌ์ ์ ์ธ์ฐ๊ณ ์์ง ์์๋ ํ ์ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฌธ์ ์ ํ์ด๋ผ๋ ํน์ง : **๊ทธ๋ฆฌ๋**
+2. ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ ํํ ์๊ณ ์์ด์ผ ํด๊ฒฐ ๊ฐ๋ฅ : **์ ๋ ฌ, ์ต๋จ๊ฒฝ๋ก** ๋ฑ
+
+\
+\
+
+
+#### ๐ ์์1 ๊ฑฐ์ค๋ฆ๋
+
+***
+
+๊ฐ์ ) ์นด์ดํฐ์ ๊ฑฐ์ค๋ฆ๋์ผ๋ก ์ฌ์ฉํ 500, 100, 50, 10์์ง๋ฆฌ ๋์ ์ด ๋ฌดํ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ์ ์๋์๊ฒ ๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ N์์ผ ๋, ๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ ๋์ ์ ์ต์ ๊ฐ์๋?(๋จ, ๊ฑฐ์ฌ๋ฌ์ค์ผ ํ ๋ **N์ ํญ์ 10์ ๋ฐฐ์**)
+
+A : **โ๊ฐ์ฅ ํฐ ํํ ๋จ์๋ถํฐโ** ๋์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒ
+
+1. ๊ฐ์ ) ๋จ์๋ **N์** : 1260์
+2. 500์ ์ง๋ฆฌ 2๊ฐ๋ฅผ ์ค
+
+ ๋จ์ ๋ : 260์
+3. 100์์ง๋ฆฌ 2๊ฐ๋ฅผ ์ค
+
+ ๋จ์ ๋ : 60์
+4. 50์์ง๋ฆฌ 1๊ฐ๋ฅผ ์ค
+
+ ๋จ์ ๋ : 10์
+5. 10์์ง๋ฆฌ 1๊ฐ๋ฅผ ์ค โ **๋์ ์ ์ต์ ๊ฐ์ : 6๊ฐ**
+
+* ์ฐธ๊ณ ) **ํ์ด์ฌ ๊ธฐํธ**
+ * `**` : ๊ฑฐ๋ญ ์ ๊ณฑ
+ * `/` : ๋๋๊ธฐ
+ * `//` : ๋๋๊ธฐ ์ฐ์ฐ ํ ์์์ ์ดํ์ ์๋ฅผ ๋ฒ๋ฆฌ๊ณ , ์ ์ ๋ถ๋ถ์ ์๋ง ๊ตฌํจ
+ * `%` : ๋๋๊ธฐ ์ฐ์ฐ ํ ๋ชซ์ด ์๋ ๋๋จธ์ง๋ฅผ ๊ตฌํจ
+
+```python
+n = 1260 -int(input())
+count = 0
+
+# ํฐ ๋จ์์ ํํ๋ก๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ธ
+coin_types = [500,100,50,10]
+
+for i in coin_types: # ํํ์ ์ข
๋ฅ๋งํผ ๋ฐ๋ณต ์ํ, **for ๋ณ์ in ๋ฆฌ์คํธ(๋๋ ํํ, ๋ฌธ์์ด)**
+ count += (n//coin_types[i]) # ํํ๋ก ๋ถํฐ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๋์ ์ ๊ฐ์ ์ธ๊ธฐ
+ n %= coin_types[i]
+
+print(count)
+```
+
+**๐ ์์1์ ์๊ฐ๋ณต์ก๋**
+
+* ๋ฐ๋ณต๋ฌธ์์ ํํ์ ์ข
๋ฅ๋งํผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ํํ์ ์ข
๋ฅ๊ฐ K๊ฐ๋ผ๊ณ ๊ฐ์ ์ : `O(K)`
+* ๊ฑฐ์ฌ๋ฌ ์ฃผ์ด์ผ ํ ๋ N์ ์ฐพ์๋ณผ ์ ์์
+* ์ฆ, ์ด ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ **๋์ ์ ์ด ์ข
๋ฅ**๋ง ์ํฅ, ๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ๋ ๊ธ์ก๊ณผ๋ ๋ฌด๊ด
+
+#### ๐ ์ ์ฌ๋ฌธ์
+
+[๋ฐฑ์ค 5585๋ฒ: ๊ฑฐ์ค๋ฆ๋](https://www.acmicpc.net/problem/5585)
+
+```python
+N = 1000 - int(input())
+count = 0
+
+coin_types = [500, 100, 50, 10, 5, 1]
+
+for i in range(6):
+ count += (N//coin_types[i])
+ N %= coin_types[i]
+
+print(count)
+```
+
+### ๐ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋น์ฑ
+
+***
+
+* ๋ชจ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ ๋ถ๊ฐ
+* BUT, ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ ์์ โ๊ฐ์ฅ ํฐ ํํ ๋จ์๋ถํฐโ ๋์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ด, `ํ์์ `์ผ๋ก ๋ฌธ์ ์ ๊ทผ์ ์ ํํ ๋ต์ ์ฐพ์ ์ ์๋ค๋ ๋ณด์ฅ์ด ์์์ **ํจ๊ณผ์ , ์ง๊ด์ **
+* ํด๋ฒ์ ์ฐพ์ ์ ํด๋ฒ์ด `์ ๋นํ์ง` ๊ฒํ
+
+> ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ก ํด๊ฒฐ ๊ฐ๋ฅํ **์ด์ ** : ๊ฐ์ง๊ณ ์๋ ๋์ ์ค์์ ํฐ ๋จ์๊ฐ ํญ์ ์์ ๋จ์์ ๋ฐฐ์์ด๋ฏ๋ก ์์ ๋จ์์ ๋์ ๋ค์ ์ข
ํฉํด ๋ค๋ฅธ ํด๊ฐ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ
+
+* ๋๋ถ๋ถ์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์์ ์ด์ฒ๋ผ ๋ฌธ์ ํ์ด๋ฅผ ์ํ ์ต์ํ์ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ ๋นํ์ง ๊ฒํ ํ ์ ์์ด์ผ ๋ต ๋์ถ ๊ฐ๋ฅ
+* ๋ง์ฝ, ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ ์ด๋ ๋์ (ํํ)์ ๋จ์์ฒ๋ผ ์๋ก ๋ฐฐ์ ํํ๊ฐ ์๋๋ผ, `๋ฌด์์`์ ํด๊ฒฐ ๋ถ๊ฐ
+
+๐ก **TIP) ์ฝ๋ฉ ํ
์คํธ์ ๋ฌธ์ ์ ํ ํ์
**
+
+1. ๋ฐ๋ก ๋ฌธ์ ์ ํ ํ์
์ด๋ ค์ธ์, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์์ฌํ๊ณ , ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ `ํ์์ ์ธ ๋ฐฉ๋ฒ`์ด ์กด์ฌํ๋์ง ๊ณ ๋ฏผ
+2. ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด, ์ดํ์ ๊ณต๋ถํ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ด๋ ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ผ๋ก ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅํ์ง ๊ณ ๋ฏผ
+
+### ๐ ์ค์ ๋ฌธ์ ) ํฐ ์์ ๋ฒ์น
+
+***
+
+* ๋ค์ํ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ๋ ์ฃผ์ด์ง ์๋ค์ M๋ฒ ๋ํ์ฌ **๊ฐ์ฅ ํฐ ์**๋ฅผ ๋ง๋๋ ๋ฒ์น
+* ๋จ, ๋ฐฐ์ด์ ํน์ ํ \*\*์ธ๋ฑ์ค(๋ฒํธ)\*\*์ ํด๋นํ๋ ์๊ฐ ์ฐ์ํด์ K๋ฒ์ ์ด๊ณผํ์ฌ ๋ํด์ง ์ ์๋ ๊ฒ์ด ํน์ง
+
+> ์์๋๋ก 2, 4, 5, 4, 6์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ์, M์ด 8์ด๊ณ , K๊ฐ 3์ด๋ผ ๊ฐ์
+
+ํน์ ํ ์ธ๋ฑ์ค ์๊ฐ **์ฐ์ํด์ 3๋ฒ๊น์ง๋ง** ๋ํด ์ง ์ ์์ผ๋ฏ๋ก, ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ผ 6 + 6 + 6 + **5** + 6 + 6 + 6 + **5**์ธ 46์ด ๋จ(์ฐ์๋์ง ์๊ฒ **์ค๊ฐ์ 5๋ฅผ ๋ฃ๊ณ ** ๊ทธ ๋ค์ ๋ค์ 6์ผ๋ก 3๋ฒ ๋ฐ๋ณต)
+
+* ๋จ, `์๋ก ๋ค๋ฅธ ์ธ๋ฑ์ค`์ ํด๋นํ๋ ์๊ฐ **๊ฐ์ ์** ์ผ ๊ฒฝ์ฐ์๋, **์๋ก ๋ค๋ฅธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ**ํ๋ค.
+
+> ์์๋๋ก 3, 4, 3, 4, 3์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์, M์ด 7์ด๊ณ , K๊ฐ 2๋ผ๊ณ ๊ฐ์
+
+ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ผ, 4+4(์ธ๋ฑ์ค1์ธ 4)+4+4(์ธ๋ฑ์ค3์ธ 4)+4+4(์ธ๋ฑ์ค 1์ธ 4) + 4 = 28
+
+#### ๐ **์ค์ ๋ฌธ์ **
+
+***
+
+์ฐธ๊ณ ) `\leq` ๊ฐ $\leq$
+
+โ ์
๋ ฅ์กฐ๊ฑด
+
+* ์ฒซ์งธ ์ค N($2\leq N \leq 1000)$, M$(1\leq M \leq 10,000)$, K$(1\leq K \leq 10,000)$์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ
+* ๋์งธ ์ค์ N๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ, ๋จ, ๊ฐ๊ฐ์ ์์ฐ์๋ 1 ์ด์ 10,000 ์ดํ์ ์๋ก ์ฃผ์ด์ง๋ค
+* ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ K๋ ํญ์ M๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค
+
+โ ์ถ๋ ฅ์กฐ๊ฑด
+
+* ์ฒซ์งธ ์ค์ ๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ผ ๋ํด์ง ๋ต์ ์ถ๋ ฅ
+
+๐ ๋ฌธ์ ํด๊ฒฐ
+
+* ์ผ๋จ, ์
๋ ฅ๊ฐ ์ค์์ ๊ฐ์ฅ ํฐ ์์ ๋๋ฒ์งธ๋ก ํฐ ์๋ง ์ ์ฅํ๋ฉด ๋จ
+* ์ฐ์์ผ๋ก ๋ํ ์ ์๋ ํ์๋ **์ต๋ K๋ฒ**์ด๋ฏ๋ก โ๊ฐ์ฅ ํฐ ์๋ฅผ K๋ฒ ๋ํ๊ณ , ๋ ๋ฒ์งธ๋ก ํฐ ์๋ฅผ ํ ๋ฒ ๋ํ๋ ์ฐ์ฐโ ๋ฐ๋ณต
+* ๋จ์ํ๊ฒ ํธ๋ ์์
+
+> ์ฐธ๊ณ ) **ํ์ด์ฌ ๋ฌธ๋ฒ**
+
+1. map - ๋ฆฌ์คํธ์ ์์๋ฅผ ์ง์ ๋ ํจ์๋ก ์ฒ๋ฆฌํด์ฃผ๋ ํจ์ - ํํ : **map(ํจ์, ๋ฆฌ์คํธ)**
+2. list - ํํ : **list(๋ฆฌ์คํธ)**
+3. split ํจ์ - ์
๋ ฅ๊ฐ์ ๋ ๊ฐ ์ด์์ผ๋ก ๊ตฌ๋ถ - ๊ฐ๊ฐ์ ๊ฐ์ ๋ฆฌ์คํธ๋ก ๋๋ ์ค - `๊ณต๋ฐฑ`์ ์์์ ๊ตฌ๋ถํด์ค
+
+```python
+# N, M, K๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
+n, m, k = map(int, input().split())
+# N๊ฐ์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
+data = list(map(int, input().split()))
+
+data.sort() # ์
๋ ฅ๋ฐ์ ์๋ค ์ ๋ ฌ
+first = data[n-1] # ๊ฐ์ฅ ํฐ ์
+second = data[n-2] # ๋ ๋ฒ์งธ๋ก ํฐ ์
+
+result = 0
+
+while True:
+ for i in range(k): # ๊ฐ์ฅ ํฐ ์๋ฅผ K๋ฒ ๋ํ๊ธฐ
+ if m == 0 # m์ด 0์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ ํ์ถ
+ break
+ result+ = first
+ m = -1 # ๋ํ ๋๋ง๋ค 1์ฉ ๋นผ๊ธฐ
+ if m == 0 # m์ด 0์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ ํ์ถ
+ break
+ result+ = second # ๋ ๋ฒ์งธ๋ก ํฐ ์ **ํ ๋ฒ** ๋ํ๊ธฐ
+ m = -1 # ๋ํ ๋๋ง๋ค 1์ฉ ๋นผ๊ธฐ
+
+ print(result)
+```
+
+#### ๐ ์ฌํ๋ฌธ์
+
+***
+
+๊ฐ์ ) M์ ํฌ๊ธฐ๊ฐ 100์ต ์ด์ โ ์์ ๊ฐ์ด ํ ์ **์๊ฐ ์ด๊ณผ ํ์ **
+
+๐ ๋ฌธ์ ํด๊ฒฐ
+
+* ์ด์ฒ๋ผ, ๊ฐ์ฅ ๋จผ์ `๋ฐ๋ณต๋๋ ์์ด`์ ๋ํด์ ํ์
+ * ์์ด๋์ด : ๋ง์ฝ N์ด 5์ด๊ณ ์
๋ ฅ ๊ฐ์ 2, 4, 5, 4, 6์ ๋ฐ์๋ค๊ณ ๊ฐ์ ํ๋ฉด,
+ * ์ฌ๊ธฐ์ ๊ฐ์ฅ ํฐ ์๋ 6์ด๊ณ , ๋ ๋ฒ์งธ๋ก ํฐ ์๋ 5๋ค.
+ * ์ด๋, M = 8, K =3์ด๋ฉด (6+6+6+5)+(6+6+6+5) = 46์ด ๋๋ค.
+* **์์ด์ ๊ธธ์ด** : `K+1`(๋๋ฒ์งธ ํฐ ์ 1๊ฐ ๋ํจ), **๋ฐ๋ณต๋๋ ํ์** : `M/(K+1)`
+ * ์ด๋, K+1์ด ๋๋์ด ๋จ์ด์ง์ง ์๋ ๊ฒฝ์ฐ๋ ๊ณ ๋ ค
+
+ : M์ (K+1)๋ก ๋๋ ๋๋จธ์ง๋งํผ ๊ฐ์ฅ ํฐ ์๊ฐ ์ถ๊ฐ๋ก ๋ํด์ง
+ * ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ ํ์ : ์ด๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ ํ์๋ฅผ ๊ตฌํ ๋ค์, ์ด๋ฅผ ์ด์ฉํด **๋ ๋ฒ์งธ๋ก ํฐ ์๊ฐ ๋ํด์ง๋ ํ์**๋ ๊ตฌํ ์ ์๋ค.
+
+ : **int((M / (K+1) ) \* K + M % (K+1) )**
+
+ ```python
+ # N, M, K๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
+ n, m, k = map(int, input().split())
+ # N๊ฐ์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
+ data = list(map(int, input().split()))
+
+ data.sort() # ์
๋ ฅ๋ฐ์ ์๋ค ์ ๋ ฌ
+ first = data[n-1] # ๊ฐ์ฅ ํฐ ์
+ second = data[n-2] # ๋ ๋ฒ์งธ๋ก ํฐ ์
+
+ # ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ **ํ์** ๊ณ์ฐ
+ count = int((m/(k+1))*k)
+ count+ = m%(k+1)
+
+ result = 0
+ result+ =(count) * first # ๊ฐ์ฅ ํฐ ์ ๋ํ๊ธฐ
+ result+ = (m-count)*second # ๋ ๋ฒ์งธ๋ก ํฐ ์ ๋ํ๊ธฐ
+
+ print(result)
+ ```
+
+### ๐ ์ค์ ๋ฌธ์ ) ์ซ์ ์นด๋ ๊ฒ์
+
+***
+
+์ฌ๋ฌ ๊ฐ์ ์ซ์ ์นด๋ ์ค์์ ๊ฐ์ฅ ๋์ ์ซ์๊ฐ ์ฐ์ธ ์นด๋ ํ ์ฅ์ ๋ฝ๋ ๊ฒ์
+
+๋จ, ๊ฒ์์ ๋ฃฐ์ ์งํค๋ฉฐ, ์นด๋๋ฅผ ๋ฝ์์ผ ํจ
+
+* ๊ฒ์์ ๋ฃฐ
+ 1. ์ซ์๊ฐ ์ฐ์ธ ์นด๋๋ค์ด N $\*$ M ํํ๋ก ๋์ฌ ์๋ค. ์ด ๋, N์ ํ์ ๊ฐ์๋ฅผ ์๋ฏธ, M์ ์ด์ ๊ฐ์๋ฅผ ์๋ฏธ
+ 2. ๋จผ์ ๋ฝ๊ณ ์ ํ๋ ์นด๋๊ฐ ํฌํจ๋์ด ์๋ ํ์ ์ ํ
+ 3. ๊ทธ ๋ค์ ์ ํ๋ ํ์ ํฌํจ๋ ์นด๋๋ค ์ค ๊ฐ์ฅ ์ซ์๊ฐ ๋ฎ์ ์นด๋๋ฅผ ๋ฝ์์ผ ํ๋ค.
+ 4. ๋ฐ๋ผ์ ์ฒ์์ ์นด๋๋ฅผ ๊ณจ๋ผ๋ผ ํ์ ์ ํ์, ์ดํ์ ํด๋น ํ์์ **๊ฐ์ฅ ์ซ์๊ฐ ๋ฎ์ ์นด๋๋ฅผ ๋ฝ์ ๊ฒ์ ๊ณ ๋ คํ์ฌ ์ต์ข
์ ์ผ๋ก ๊ฐ์ฅ ๋์ ์ซ์์ ์นด๋๋ฅผ ๋ฝ์ ์ ์๋๋ก ์ ๋ต**
+
+โ ์
๋ ฅ์กฐ๊ฑด
+
+* **์ฒซ์งธ ์ค**์ ์ซ์ ์นด๋๋ค์ด ๋์ธ ํ์ ๊ฐ์ N๊ณผ ์ด์ ๊ฐ์ M์ด **๊ณต๋ฐฑ์ ๊ธฐ์ค**์ผ๋ก ํ์ฌ ๊ฐ๊ฐ ์์ฐ์๋ก ์ฃผ์ด์ง๋ค.$(1\leq N, M\leq100)$
+* **๋์งธ ์ค๋ถํฐ** N๊ฐ์ ์ค์ ๊ฑธ์ณ, ๊ฐ ์นด๋์ ์ ํ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์ซ์๋ 1์ด์ 10,000์ดํ์ ์์ฐ์์ด๋ค.
+
+โ ์ถ๋ ฅ์กฐ๊ฑด
+
+์ฒซ์งธ ์ค์ ๊ฒ์์ ๋ฃฐ์ ๋ง๊ฒ ์ ํํ ์นด๋์ ์ ํ ์ซ์ ์ถ๋ ฅ
+
+๐ ๋ฌธ์ ํด๊ฒฐ
+
+* ์์ด๋์ด : **๊ฐ ํ๋ง๋ค ๊ฐ์ฅ ์์ ์๋ฅผ ์ฐพ์ ๋ค์ ๊ทธ ์ ์ค์์ ๊ฐ์ฅ ํฐ ์**
+* **min() ํจ์**๋ฅผ ์ด์ฉํ๋ ๋ต์ ์์
+
+```python
+# N๊ณผ M์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
+n, m = map(int, input().split())
+
+result = 0
+# ํ ์ค์ฉ ์
๋ ฅ๋ฐ์ ํ์ธ
+for i in range(n):
+ data = list(map(int, input().split()))
+ # ํ์ฌ ์ค์์ '๊ฐ์ฅ ์์ ์' ์ฐพ๊ธฐ
+ min_value = min(data)
+ # '๊ฐ์ฅ ์์ ์'๋ค ์ค์์ ๊ฐ์ฅ ํฐ ์ ์ฐพ๊ธฐ
+ result = max(result, min_value)
+
+print(result)
+```
+
+* **2์ค ๋ฐ๋ณต๋ฌธ ๊ตฌ์กฐ**๋ฅผ ์ด์ฉํ์ฌ ๋ต์ ์์
+
+```python
+# N๊ณผ M์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
+n, m = map(int, input().split())
+
+result = 0
+
+for i in range(n):
+ data = list(map(int, input().split()))
+ # ํ์ฌ ์ค์์ '๊ฐ์ฅ ์์ ์' ์ฐพ๊ธฐ
+ min_value = 10001
+ for a in data:
+ min_value = min(min_value, a)
+ # ๊ฐ์ฅ ์ ์ ์ ๋ค ์ค ๊ฐ์ฅ ํฐ ์ ์ฐพ๊ธฐ
+ result = max(result, min_value)
+
+print(result)
+```
+
+### ๐ ์ค์ ๋ฌธ์ ) 1์ด ๋ ๋๊น์ง
+
+***
+
+์ด๋ ํ ์ N์ด 1์ด ๋ ๋๊น์ง ๋ค์์ ๋ ๊ณผ์ ์ค ํ๋๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ๋ ค๊ณ ํ๋ค.๋จ, ๋ ๋ฒ์งธ ์ฐ์ฐ์ N์ด K๋ก ๋๋์ด๋จ์ด์ง ๋๋ง ์ ํ ๊ฐ๋ฅ
+
+1. N์์ 1์ ๋บ๋ค.
+2. N์ K๋ก ๋๋๋ค.
+
+โ ์
๋ ฅ์กฐ๊ฑด
+
+* ์ฒซ์งธ ์ค์ N($2\leq N \leq 100,000)$๊ณผ K($2 \leq K \leq 100,000)$๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ ๊ฐ๊ฐ ์์ฐ์๋ก ์ฃผ์ด์ง๋ค. ์ด๋ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ N์ ํญ์ K๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค.
+
+โ ์ถ๋ ฅ์กฐ๊ฑด
+
+* ์ฒซ์งธ ์ค์ด N์ด 1์ด ๋ ๋๊น์ง 1๋ฒ ํน์ 2๋ฒ์ ๊ณผ์ ์ ์ํํด์ผ ํ๋ ํ์์ ์ต์๊ฐ์ ๊ตฌํด๋ผ
+
+๐ ๋ฌธ์ ํด๊ฒฐ
+
+์์ด๋์ด : ์ต๋ํ ๋ง์ด ๋๋๊ธฐ
+
+* ์ : N = 25, K =3 ์ผ ๊ฒฝ์ฐ
+ * 1๋จ๊ณ : N์์ 1๋นผ๊ธฐ\*\*(๋๋์ด ๋จ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์ 2๋ฒ ๋ถ๊ฐ) โ\*\* 24
+ * 2๋จ๊ณ : N์์ K๋ก ๋๋๊ธฐ โ 8
+ * 3๋จ๊ณ : N์์ 1๋นผ๊ธฐ โ 7
+ * 4๋จ๊ณ : N์์ 1๋นผ๊ธฐ โ 6
+ * 5๋จ๊ณ : N์์ K๋๋๊ธฐ โ 2
+ * 6๋จ๊ณ : N์์ 1๋นผ๊ธฐ โ 1
+* ๋จ์ํ๊ฒ ํ๊ธฐ
+
+```python
+n,k = map(int, input().split())
+result = 0
+
+# N์ด K์ด์์ด๋ผ๋ฉด ๊ณ์ ๋๋๊ธฐ
+while n>=k:
+ # N์ด K๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค๋ฉด N์์ 1๋นผ๊ธฐ
+while n % k !=0 :
+ n-= 1
+ result+ =1
+# k๋ก ๋๋๊ธฐ
+n//=k
+result+=1
+
+print(result)
+```
+
+* ์๊ฐ ์ปค์ง ๋
+
+```python
+n,k = map(int, input().split())
+result = 0
+
+while True:
+ #(N==K๋ก ๋๋์ด๋จ์ด์ง๋ ์)๊ฐ ๋ ๋๊น์ง 1์ฉ ๋นผ๊ธฐ
+ target = (n//k) * k
+ result+ = (n-target)
+ n = target
+ # N์ด K๋ณด๋ค ์์๋ ๋ฐ๋ณต๋ฌธ ํ์ถ
+ if n ๋์ ๊ณํ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ๋๋, ์ฐ์ ์์ ๋ฌธ์ ๋ถํฐ ํด๊ฒฐํด๋๊ฐ๋ณด๋ ๊ฒ์ด ์ข๋ค. ์์ ๋ฌธ์ ๋ค์ ํ์ด๋๊ฐ๋ค๋ณด๋ฉด ์ด์ ์ ๊ตฌํด๋ ๋ ์์ ๋ฌธ์ ๋ค์ด ํ์ฉ๋๋ ๊ฒ์ ํ์ธํ๊ฒ ๋๋ค. ์ด์ ๋ํ ๊ท์น์ ์ฐพ์์ ๋ **์ ํ์**์ ๋์ถํด๋ด์ด ๋์ ๊ณํ๋ฒ์ ์ ์ฉ์ํค์
+
+### ๐ ๊ฐ๋
+
+> ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์ ๋ก ๋๋์ด ํธ๋ ๋ฐฉ๋ฒ, ์์ ํ์ ๋ฌธ์ ์ ํด๋ฅผ ์ ์ฅํ๊ณ ํ์ฉํ์ฌ ์ค๋ณต ๊ณ์ฐ์ ํผํ๋ฉฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ค์
+
+* ์
๋ ฅ ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ํ, ํด๋น ๋ถ๋ถ ๋ฌธ์ ์ ํด๋ฅผ ํ์ฉํด์, ๋ณด๋ค ํฐ ํฌ๊ธฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ, ์ต์ข
์ ์ผ๋ก ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ
+* **์ํฅ์ ์ ๊ทผ๋ฒ**์ผ๋ก, ๊ฐ์ฅ ์ตํ์ ํด๋ต์ ๊ตฌํ ํ, ์ด๋ฅผ ์ ์ฅํ๊ณ , ํด๋น ๊ฒฐ๊ณผ๊ฐ์ ์ด์ฉํด์ ์์ ๋ฌธ์ ๋ฅผ ํ์ด๊ฐ๋ ๋ฐฉ์
+* ํ ๊ฐ์ง ๋ฌธ์ ์ ๋ํด์, ๋จ ํ๋ฒ๋ง ํ๋๋ก ๋ง๋ค์ด์ฃผ๋ ์๊ณ ๋ฆฌ์ฆ
+ * ์ฆ, **๋๊ฐ์ ์ฐ์ฐ์ ๋ฐ๋ณตํ์ง ์๋๋ก ๋ง๋ค์ด์ค๋ค.** ์คํ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ํ์ ์ ๊ทผ ๋ฐฉ์์ ์๊ณ ๋ฆฌ์ฆ
+* `Memoization` ๊ธฐ๋ฒ์ ์ฌ์ฉํจ
+
+### ๐ ์ ๊ทผ ๋ฐฉ์
+
+* ์ปค๋ค๋ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ๊ธฐ ์ํด ์๊ฒ ์ชผ๊ฐ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ธ ๋ถํ ์ ๋ณต๊ณผ ๋งค์ฐ ์ ์ฌํ์ง๋ง **๊ฐ๋จํ ๋ฌธ์ ๋ก ๋ง๋๋ ๊ณผ์ ์์ ์ค๋ณต ์ฌ๋ถ์ ๋ํ ์ฐจ์ด์ **์ด ์กด์ฌํ๋ค.
+* ์ฆ, ๋์ ๊ณํ๋ฒ์ ๊ฐ๋จํ ์์ ๋ฌธ์ ๋ค ์์์ `๊ณ์ ๋ฐ๋ณต๋๋ ์ฐ์ฐ`์ ํ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ํ ์ ์๋ ๊ฒ์ด ํต์ฌ
+
+### ๐ ์ข
๋ฅ
+
+1. ํผ๋ณด๋์น ์์ด
+2. ๋ฐฐ๋ญ ๋ฌธ์
+3. ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด
+4. ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์
+5. ์ต์ ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์
+6. ๋งคํธ๋ฆญ์ค ์ฒด์ธ ๊ณฑ์
+7. ํ๋ ฌ ๊ฒฝ๋ก ๋ฌธ์
+
+### ๐ Memoization ๊ธฐ๋ฒ์ด๋?
+
+* Memoization (๋ฉ๋ชจ์ด์ ์ด์
) ์ด๋: ํ๋ก๊ทธ๋จ ์คํ ์ ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ์ ์ฅํ์ฌ, ๋ค์ ๊ณ์ฐํ์ง ์๋๋ก ํ์ฌ ์ ์ฒด ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๊ธฐ์
+* ๋ฌธ์ ๋ฅผ ์๊ฒ ์ชผ๊ฐค ๋, ๋ถ๋ถ ๋ฌธ์ ๋ ์ค๋ณต๋์ด, ์ฌํ์ฉ๋จ
+
+ * ์: ํผ๋ณด๋์น ์์ด 1 1 2 3 5 8 โฆ. 1 1๋ก ์์ํ๊ณ ๋ค์ ๋ชจ๋ ํญ์ ๋ฐ๋ก ์ ๋ํญ์ ํฉ์ ์์ด
+
+ > ํผ๋ณด๋์น ์์ด์์ ์ฌ๊ท๋ฅผ ํ์ฉํ์ฌ ํ ๊ฒฝ์ฐ, ๊ฐ์ ์ฐ์ฐ์ ๊ณ์ ๋ฐ๋ณตํจ์ ์ ์ ์๋ค.
+ >
+ > ์ด๋, `๋ฉ๋ชจ์ด์ ์ด์
`์ ํตํด **๊ฐ์ ์์
์ ๋ํ์ด ํ์ง ์๋๋ก ๊ตฌํํ๋ฉด ํจ์จ์ **์ด๋ค.
+
+ * return f(n) = f(n-1) + f(n-2)
+* ์ฝ๋\[์ฌ๊ท] : ์๊ฐ ๋ณต์ก๋ `O(2^n)`
+
+```java
+import java.util.Scanner;
+
+public class Fibonacci {
+ private static int fibonacci(int n){
+ if(n <= 1) return n;
+ return fibonacci(n - 1) + fibonacci(n - 2);
+ }
+
+ public static void main(String[] args){
+ Scanner in = new Scanner(System.in);
+ int n = in.nextInt();
+
+ int result = fibonacci(n);
+ System.out.printf("ํผ๋ณด๋์น ์์ด์ %d๋ฒ์งธ ๊ฐ : %d", n, result);
+ }
+}
+```
+
+* ์ฝ๋ 2\[๋์ ๋ฐฉ๋ฒ ์ด์ฉ] : ์๊ฐ ๋ณต์ก๋ `O(N)`
+
+```java
+public class Dynamic {
+
+ public int dynamicFunc(int data){
+ Integer[] cache = new Integer[data+1];
+ cache[0] = 0;
+ cache[1] = 1;
+ for(int index=2; index ๋ถํ ์ ๋ณต์ ์ฃผ๋ก ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ ๋ฐ ์ค์
+
+* ๋ฌธ์ ๋ฅผ ๋๋ ์ ์์ ๋๊น์ง ๋๋์ด์ ๊ฐ๊ฐ์ ํ๋ฉด์ ๋ค์ ํฉ๋ณํ์ฌ ๋ฌธ์ ์ ๋ต์ ์ป๋ ์๊ณ ๋ฆฌ์ฆ
+* ํ์์ ์ ๊ทผ๋ฒ์ผ๋ก, ์์์ ํด๋ต์ ๊ตฌํ๊ธฐ ์ํด, ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด์ ํ์์ ํด๋ต์ ๊ตฌํ๋ ๋ฐฉ์
+ * ์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ทํจ์๋ก ๊ตฌํ
+* ๋ฌธ์ ๋ฅผ ์๊ฒ ์ชผ๊ฐค ๋, ๋ถ๋ถ ๋ฌธ์ ๋ ์๋ก ์ค๋ณต๋์ง ์์
+ * ์: ๋ณํฉ ์ ๋ ฌ, ํต ์ ๋ ฌ ๋ฑ
+
+### ๐ Merge Sort\[๋ณํฉ ์ ๋ ฌ]
+
+๊ด๋ จ ๋์ ๋ฐฉ๋ฒ์ [๋
ธ์
](https://incredible-gem-98e.notion.site/8-22-248bec70cb274c17b0eee9199ab7011e?pvs=4)์..
+
+#### ๊ฐ๋
+
+1. ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก, **ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ์ฌ ํด๊ฒฐ**ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ ๋ ฌ์ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ
+2. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ๊ฑฐ์ `O(n log n)`์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฏ๋ก ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ ๋ ฌ์ ๋ง์ด ์ฌ์ฉ
+3. ํฉ๋ณ ์ ๋ ฌ์ ๋ฐ์ดํฐ ์์ด ๋ง์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํ ๋๋ ์์ ์ ์ธ ์ ๋ ฌ์ ์ํ ๋ ์ฃผ๋ก ์ ํ๋๋ ์๊ณ ๋ฆฌ์ฆ
+
+#### ๋์๋ฐฉ๋ฒ
+
+> ์๋์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ์์ ๋ฐฐ์ด๋ถํฐ ์ ๋ ฌํ์ฌ ํฉ์ณ๋๊ฐ๋ฉด, ์ ์ฒด ๋ฐฐ์ด์ด ์ ๋ ฌ๋ ์ํ๊ฐ ๋๋ค. `ํฉ๋ณ ์ ๋ ฌ`์ **์ฌ๊ท์ ์ธ ๊ตฌ์กฐ**๊ฐ ๋๋ฏ๋ก, ์๋ ์ธ ๋จ๊ณ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ํํด ๋ด๋๊ฐ๋ฉฐ ์ ๋ ฌ์ด ์์ฑ๋๋ค.
+
+1. **๋ถํ (Divide)** : ์ ๋ ฌํ ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋๋ค. ์ด๋ฅผ ๊ณ์ํด์ ์์ ๋ฐฐ์ด์ด ๋ ๋๊น์ง ๋ฐ๋ณต์ ์ผ๋ก ๋ถํ
+2. **์ ๋ณต(Conquer)** : ๋ถํ ๋ ์์ ๋ฐฐ์ด์ ์ ๋ ฌ, ๋ง์ฝ **๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 1์ด๊ฑฐ๋ 0์ด๋ผ๋ฉด ์ด๋ฏธ ์ ๋ ฌ๋ ์ํ**
+3. **ํฉ๋ณ(Merge)** : ์ ๋ ฌ๋ ์์ ๋ฐฐ์ด๋ค์ ํ๋๋ก ํฉ๋ณํ๋ค. ์ด๋, ๋ ๋ฐฐ์ด์ ๋น๊ตํ์ฌ ์ ๋ ฌ๋ ์์๋๋ก ํฉ์น๋๋ฐ, ์์ ๊ฐ๋ถํฐ ์์๋๋ก ๋ณํฉ
+
+```java
+import java.util.ArrayList;
+
+public class MergeSort {
+
+ private ArrayList mergeFunc(ArrayList leftArr, ArrayList rightArr) {
+
+ ArrayList mergedList = new ArrayList();
+ int leftPoint = 0;
+ int rightPoint = 0;
+
+ // CASE 1 : left/right๊ฐ ๋ ๋ค ์์ ๋
+ while(leftArr.size() > leftPoint && rightArr.size() > rightPoint){
+ //์๋ฆฌ๋ฐ๊ฟ์ด ์ผ์ด๋๋ ์กฐ๊ฑด
+ if(leftArr.get(rightPoint) > rightArr.get(rightPoint)){
+ mergedList.add(rightArr.get(rightPoint));
+ rightPoint += 1;
+ }
+ else{
+ mergedList.add(leftArr.get(leftPoint));
+ leftPoint += 1;
+ }
+ }
+
+ // CASE 2 : right ๋ฐ์ดํฐ๊ฐ ์์ ๋
+ while(leftArr.size() > leftPoint){
+ mergedList.add(leftArr.get(leftPoint));
+ leftPoint += 1;
+ }
+
+ // CASE 3 : left ๋ฐ์ดํฐ๊ฐ ์์ ๋
+ while(rightArr.size() > rightPoint){
+ mergedList.add(rightArr.get(rightPoint));
+ rightPoint += 1;
+ }
+
+ return mergedList;
+ }
+
+ public ArrayList margeSplitFunc(ArrayList arrayList) {
+ if(arrayList.size() <= 1){return arrayList;}
+ // ์ค๊ฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ณํฉํ๋ ๋๋
+ int medium = arrayList.size()/2;
+
+ ArrayList leftArr = new ArrayList();
+ ArrayList rightArr = new ArrayList();
+
+ leftArr = new ArrayList(arrayList.subList(0, medium));
+ rightArr = new ArrayList(arrayList.subList(medium, arrayList.size()));
+
+ // ์ ๋ ฌํ๋ ํจ์ ๋ง๋ค๊ธฐ
+ return this.mergeFunc(leftArr, rightArr);
+ }
+
+ public static void main(String[] args){
+ ArrayList testData = new ArrayList<>();
+
+ for(int index=0; index<100; index++){
+ testData.add((int)(Math.random()*100));
+ }
+
+ System.out.println(testData);
+ MergeSort mergeSort = new MergeSort();
+ System.out.println(mergeSort.margeSplitFunc(testData));
+ }
+}
+```
+
+#### ํฉ๋ณ ์ ๋ ฌ ํน์ง
+
+1. ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ๋์ผํ ๊ฐ์ ์๋์ ์ธ ์์๊ฐ ๋ณํ์ง ์๋๋ค.
+2. ์ธ๋ถ ์ ๋ ฌ์ ์ ํฉ : ๋ฐ์ดํฐ์ ์์ด ๋ง์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ์ฌ๋ฆฌ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
+3. ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ์ : ๋ฐฐ์ด์ ๋ถํ ํ๊ณ ํฉ์น๋ ๊ณผ์ ์์ ์์ ๋ฐฐ์ด์ด ํ์ํ๋ฏ๋ก, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
+4. ํ๊ท ๋ฐ ์ต์
์๊ฐ ๋ณต์ก๋: `O(n log n)`
+5. ์ต์ ์ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋: `O(n log n)`
+6. ์ ๋ ฌ๋ ์ํ์์๋ ํจ์จ์ : ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ํฉ์น๋ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ผ๋ก ์๋
+
+### ๐ ํต ์ ๋ ฌ(QuickSort)
+
+#### ํต์ ๋ ฌ์ ์ ์
+
+* ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ
+* ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ทผ๊ฐ์ด ๋๋ ์๊ณ ๋ฆฌ์ฆ
+
+#### ๊ธฐ์ค ๋ฐ์ดํฐ ์ค์ , **๊ทธ ๊ธฐ์ค๋ณด๋ค ํฐ ๋ฐ์ดํฐ์ ์์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๋ฐ๊พธ๋ฉด** ?
+
+* ๊ธฐ์ค์ ์ค์ ํ ๋ค์ ํฐ ์์ ์์์๋ฅผ ๊ตํํ ํ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์ผ๋ก ๋๋๋ ๋ฐฉ์
+* `ํผ๋ฒ`์ด ์ฌ์ฉ
+
+ โ ํฐ ์ซ์์ ์์ ์ซ์ ๊ตํ์, ๊ตํํ๊ธฐ ์ํ **๊ธฐ์ค**
+
+ โ ํธ ์ ๋ ฌ์ **์ํํ๊ธฐ ์ ** ํผ๋ฒ์ ์ด๋ป๊ฒ ์ค์ ํ ๊ฒ์ธ์ง ๋ฏธ๋ฆฌ ๋ช
์ ํด์ผ ํจ
+* ํผ๋ฒ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ ๋น๊ต ์ฐ์ฐ ํ์๊ฐ ์ฆ๊ฐํ๋ฏ๋ก, ์๊ฐ ๋ฉด์์๋ ์กฐ๊ธ ๋นํจ์จ์ but, ์ง๊ด์ ์ด๊ณ ๊ธฐ์ตํ๊ธฐ ์ฝ๋ค
+
+#### ํธ์ด ๋ถํ ๋ฐฉ์
+
+* ์ฌ๊ท ํจ์ ๋์์๋ฆฌ๊ฐ ๊ฐ์
+
+ โ **์ข
๋ฃ์กฐ๊ฑด**์ด ์์ด์ผ ํจ : ํ์ฌ ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ ๊ฐ์๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ
+
+1. ๋ฆฌ์คํธ์์ **์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ**๋ฅผ ํผ๋ฒ์ผ๋ก ์ ํ๋ค
+2. ํผ๋ฒ ์ค์ ํ ๋ค์๋ `์ผ์ชฝ`์์๋ถํฐ ํผ๋ฒ๋ณด๋ค **ํฐ** ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ , `์ค๋ฅธ์ชฝ`์์๋ถํฐ ํผ๋ฒ๋ณด๋ค **์์** ๋ฐ์ดํฐ๋ฅผ ์ฐพ์
+3. ํฐ ๋ฐ์ดํฐ์ ์์ ๋ฐ์ดํฐ์ **์์น๋ฅผ ์๋ก ๊ตํ**
+
+#### ํต ์ ๋ ฌ ๋ฐฉ์(ํธ์ด ๋ถํ ๋ฐฉ์ ์์)
+
+โจ **1ํํธ**
+
+1. ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ํผ๋ฒ์ผ๋ก ์ค์ ํ๋ฏ๋ก ํผ๋ฒ์ โ5โ ์ดํ์ `์ผ์ชฝ`์์๋ถํฐ โ5โ๋ณด๋ค **ํฐ** ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ฏ๋ก โ7โ์ด ์ ํ, `์ค๋ฅธ์ชฝ`์์๋ถํฐ โ5โ๋ณด๋ค **์์** ๋ฐ์ดํฐ๊ฐ ์ ํ๋๋ฏ๋ก โ4โ๊ฐ ์ ํ โ ๋ ๋ฐ์ดํฐ์ ์์น ์๋ก ๋ณ๊ฒฝ
+
+![](https://velog.velcdn.com/images/prettylee620/post/c6188d6b-7b23-4eb4-84da-ed98f23dbc0f/image.png)
+
+2. ๊ทธ๋ค์ ๋ค์ ํผ๋ฒ๋ณด๋ค ํฐ ๋ฐ์ดํฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ์ฐพ๊ณ , ๊ทธ ๋ค ๋ ๊ฐ์ ์์น๋ฅผ ์๋ก ๋ณ๊ฒฝ
+
+![](https://velog.velcdn.com/images/prettylee620/post/9460cdf3-6db0-4f43-8534-9d5521e54c05/image.png)
+
+3. ๊ทธ ๋ค์ ๋ค์ ํผ๋ฒ๋ณด๋ค ํฐ ๋ฐ์ดํฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค.
+ 1. ๋จ, ํ์ฌ ์ผ์ชฝ์์๋ถํฐ ์ฐพ๋ ๊ฐ๊ณผ ์ค๋ฅธ์ชฝ์์๋ถํฐ ์ฐพ๋ ๊ฐ์ **์์น๊ฐ ์๋ก ์๊ฐ๋ฆด ์**๋ ์๋ค.
+ 2. ์ด๋ ๊ฒ ๋ ๊ฐ์ด ์๊ฐ๋ฆฐ ๊ฒฝ์ฐ์๋ โ์์ ๋ฐ์ดํฐโ์ โํผ๋ฒโ์ ์์น๋ฅผ ์๋ก ๋ณ๊ฒฝํ๋ค.
+ 3. ์์ ๋ฐ์ดํฐ์ โ1โ๊ณผ ํผ๋ฒ์ธ โ5โ์ ์์น๋ฅผ ์๋ก ๋ณ๊ฒฝํ์ฌ `๋ถํ ์ํ`
+
+![](https://velog.velcdn.com/images/prettylee620/post/f253a992-05ae-47a9-9ef7-15b66c592f55/image.png)
+
+4. `๋ถํ ์๋ฃ` : ์ด์ ๊ฐ์ด ํผ๋ฒ์ด ์ด๋ํ ์ํ์์ ์ผ์ชฝ ๋ฆฌ์คํธ์ ์ค๋ฅธ์ชฝ ๋ฆฌ์คํธ๋ฅผ ์ดํด๋ณด์
+ 1. ์ด์ โ5โ ์ผ์ชฝ์ ์๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ โ5๋ณด๋ค ์๊ณ , ์ค๋ฅธ์ชฝ์ ์๋ ๋ฐ์ดํฐ๋ โ5โ๋ณด๋ค ํฌ๋ค๋ ํน์ง
+ 2. `๋ถํ ` ํน์ `ํํฐ์
` : ํผ๋ฒ์ **์ผ์ชฝ**์๋ **ํผ๋ฒ๋ณด๋ค ์์ ๋ฐ์ดํฐ**๊ฐ ์์น, ํผ๋ฒ์ **์ค๋ฅธ์ชฝ**์๋ **ํผ๋ฒ๋ณด๋ค ์์ ๋ฐ์ดํฐ**๊ฐ ์์น
+
+![](https://velog.velcdn.com/images/prettylee620/post/18a068bd-ea22-4fba-9bbd-60456859b915/image.png)
+
+โจ 2**ํํธ**
+
+์ผ์ชฝ ๋ฆฌ์คํธ์์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ๋ ฌ ์งํ, ๊ตฌ์ฒด์ ์ธ ์ ๋ ฌ ๊ณผ์ ์ ๋์ผ
+
+![](https://velog.velcdn.com/images/prettylee620/post/e72f5399-4447-4641-a155-b63857c949d7/image.png)
+
+โจ 3**ํํธ**
+
+์ค๋ฅธ์ชฝ ๋ฆฌ์คํธ์์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ๋ ฌ ์งํ, ๊ตฌ์ฒด์ ์ธ ์ ๋ ฌ ๊ณผ์ ์ ๋์ผ
+
+![](https://velog.velcdn.com/images/prettylee620/post/a0d80f58-ae56-4345-aacc-f5906b461675/image.png)
+
+#### ํต ์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋
+
+* ํ๊ท ์ ์๊ฐ๋ณต์ก๋ : $`O(NlogN)`$
+* ์ต์
์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋ : $`O(N^2)`$
+
+ โ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ ๋ ฌ๋์ด ์๋ ๊ฒฝ์ฐ ๋งค์ฐ ๋๋ฆฌ๊ฒ ์๋
+* ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๋นํด ์์ฒญ ๋น ๋ฅธ ํธ
+* ๋ถํ ์ด ์ด๋ฃจ์ด์ง๋ ํ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๊ฐ์
+
+```java
+
+package Danymic;
+
+import java.util.Scanner;
+
+public class QuickSortEx {
+
+ public static void main(String[] args){
+ Scanner in = new Scanner(System.in);
+ int arr[] = {3, 33, 38, 5, 2, 7, 15, 36, 26, 27, 2};
+
+ System.out.println("์ ๋ ฌ ์ :"+arr);
+
+ System.out.println("์ ๋ ฌ ํ");
+ quickSort(arr, 0, arr.length-1);
+ }
+
+ public static void quickSort(int[] array, int left, int right) {
+ if(left >= right) return;
+
+ //๋ถํ
+ int pivot = partition(array, left, right);
+
+ // ์๊ธฐ ์์ ์ ์ฌ๊ท์ ์ผ๋ก ๋ถ๋ฆ
+ quickSort(array, left, pivot);
+ quickSort(array, pivot+1, right);
+ }
+
+ private static int partition(int[] array, int left, int right) {
+ int pivot = array[left];
+ int i = left, j= right;
+ while (i < j){
+ // ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก j๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐพ์
+ while(pivot < array[j]){
+ j--;
+ }
+ while(i= array[i]){
+ i++;
+ }
+ swap(array, i, j);
+ }
+ array[left] = array[i];
+ array[i] = pivot;
+
+ return i;
+
+ }
+
+ private static void swap(int[] array, int i, int j) {
+ int tmp = array[i];
+ array[i] = array[j];
+ array[j] = tmp;
+ }
+}
+```
+
+#### arrayList๋ฅผ ์ด์ฉํ ๋์์๋ฆฌ
+
+```java
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class QuickSort {
+ public ArrayList sort(ArrayList dataList) {
+ if (dataList.size() <= 1) {
+ return dataList;
+ }
+ int pivot = dataList.get(0);
+
+ ArrayList leftArr = new ArrayList();
+ ArrayList rightArr = new ArrayList();
+
+ for (int index = 1; index < dataList.size(); index++) {
+ if (dataList.get(index) > pivot) {
+ rightArr.add(dataList.get(index));
+ } else {
+ leftArr.add(dataList.get(index));
+ }
+ }
+
+
+ ArrayList mergedArr = new ArrayList();
+ mergedArr.addAll(sort(leftArr));
+ mergedArr.addAll(Arrays.asList(pivot));
+ mergedArr.addAll(sort(rightArr));
+
+ return mergedArr;
+ }
+
+ public static void main(String[] args) {
+ ArrayList testData = new ArrayList();
+
+ for (int index = 0; index < 100; index++) {
+ testData.add((int)(Math.random() * 100));
+ }
+ QuickSort qSort = new QuickSort();
+ System.out.println(qSort.sort(testData));
+ }
+}
+```
+
+### ๐ ์ข
๋ฅ
+
+1. ํฉ๋ณ ์ ๋ ฌ
+2. ํต ์ ๋ ฌ
+3. ๊ฑฐ๋ญ์ ๊ณฑ ์๊ณ ๋ฆฌ์ฆ
+4. ๋ณ๋ ฌ ํ๋ ฌ ๊ณฑ์
+5. ์ต๊ทผ์ ์ ์ ์ฐพ๊ธฐ
+6. ์ต๋ ๋ถ๋ถ๋ฐฐ์ด ๋ฌธ์
+
+### ๐๊ณตํต์ ๊ณผ ์ฐจ์ด์
+
+* ๊ณตํต์
+ * ๋ฌธ์ ๋ฅผ ์๊ฒ ์ชผ๊ฐ์, ๊ฐ์ฅ ์์ ๋จ์๋ก ๋ถํ
+* ์ฐจ์ด์
+ * ๋์ ๊ณํ๋ฒ
+ * ๋ถ๋ถ ๋ฌธ์ ๋ ์ค๋ณต๋์ด, ์์ ๋ฌธ์ ํด๊ฒฐ ์ ์ฌํ์ฉ๋จ
+ * `Memoization` ๊ธฐ๋ฒ ์ฌ์ฉ (๋ถ๋ถ ๋ฌธ์ ์ ํด๋ต์ ์ ์ฅํด์ ์ฌํ์ฉํ๋ ์ต์ ํ ๊ธฐ๋ฒ์ผ๋ก ์ฌ์ฉ)
+ * ๋ถํ ์ ๋ณต
+ * ๋ถ๋ถ ๋ฌธ์ ๋ ์๋ก ์ค๋ณต๋์ง ์์
+ * `Memoization` ๊ธฐ๋ฒ ์ฌ์ฉ ์ํจ
diff --git "a/developLog/algorithm-datastructure/algorithm/_ \353\262\204\353\270\224 \354\240\225\353\240\254_ \354\202\275\354\236\205 \354\240\225\353\240\254_ \354\204\240\355\203\235 \354\240\225\353\240\254_.md" "b/developLog/algorithm-datastructure/algorithm/_ \353\262\204\353\270\224 \354\240\225\353\240\254_ \354\202\275\354\236\205 \354\240\225\353\240\254_ \354\204\240\355\203\235 \354\240\225\353\240\254_.md"
new file mode 100644
index 0000000..9bc8e5e
--- /dev/null
+++ "b/developLog/algorithm-datastructure/algorithm/_ \353\262\204\353\270\224 \354\240\225\353\240\254_ \354\202\275\354\236\205 \354\240\225\353\240\254_ \354\204\240\355\203\235 \354\240\225\353\240\254_.md"
@@ -0,0 +1,734 @@
+# ๋ฒ๋ธ ์ ๋ ฌ, ์ฝ์
์ ๋ ฌ, ์ ํ ์ ๋ ฌ
+
+## ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
+
+> ์ฐธ๊ณ ๋์ ๋ฐฉ์ ๋งํฌ : https://visualgo.net/en/sorting
+
+### ๐ ์ ์
+
+* ์ด๋ค ๋ฐ์ดํฐ๋ค์ด ์ฃผ์ด์ก์๋, ์ด๋ฅผ ์ ํด์ง ์์๋๋ก ๋์ดํ๋ ๊ฒ
+* ๋ญ๊ฐ๋ฅผ `์ ๋ ฌ`ํ๋ ๊ฒ
+ * A๋ถํฐ Z๊น์ง ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
+ * ํฐ ์์์ ์์ ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
+* ๋ฐ์ดํฐ๋ฅผ ํน์ ํ ๊ธฐ์ค์ ๋ฐ๋ผ์ ์์๋๋ก ๋์ดํ๋ ๊ฒ
+* ํ๋ก๊ทธ๋จ ์์ฑ ์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ
+* `์ด์ง๊ฒ์`์ฒ๋ผ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ์ ์ํด์
+* ์๊ณ ๋ฆฌ์ฆ์ `ํจ์จ์ฑ`์ ์ฝ๊ฒ ์ดํด ๊ฐ๋ฅ
+* ๋ด๋ฆผ์ฐจ์์ ์ค๋ฆ์ฐจ์์ **reverse**๋ฅผ ์ด์ฉํด์ ๋ค์ง์ผ๋ฉด ๋จ
+
+### ๐ ๋ฒ๋ธ ์ ๋ ฌ
+
+* ๋ ์ธ์ ํ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํด์ , **์์ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ ์๋ ๋ฐ์ดํฐ๋ณด๋ค ํฌ๋ฉด, ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๋** ์๊ณ ๋ฆฌ์ฆ
+* ์์ฃผ ์ฌ์ฉ๋์ง๋ ์์ ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด ๋ง๊ธฐ ๋๋ฌธ์ด๋ค.
+
+#### ์ ๋ ฌ๋ฐฉ๋ฒ
+
+* ๋ฐฐ์ด์ 2๊ฐ์ ์์ดํ
์ `์ ํ`
+* `๋น๊ต(comparisons)` : **์ผ์ชฝ**์ด ์ค๋ฅธ์ชฝ๋ณด๋ค **ํฌ๋ฉด** `๊ตํ(swap)`
+* ์ค๋ฅธ์ชฝ์ผ๋ก `์ด๋`ํด์, ํด๋น ํ๋ก์ธ์ค `๋ฐ๋ณต` , ์๋ฅผ ๋ค์ด 5์ 6์ ๋น๊ต
+
+ โ ์ผ์ชฝ์ด ์ค๋ฅธ์ชฝ๋ณด๋ค ์์ผ๋ฏ๋ก ๊ตํํ์ง ์์
+
+1. ๊ทธ ๋ค์์ 6๊ณผ 3์ ๋น๊ต โ ๊ตํ **๊ฒฐ๊ณผ** : 2 5 3 6 1 4
+2. 6๊ณผ 1์ ๋น๊ต โ ๊ตํ **๊ฒฐ๊ณผ** : 2 5 3 1 6 4
+3. 6๊ณผ 4๋ฅผ ๋น๊ต โ ๊ตํ **๊ฒฐ๊ณผ** : 2 5 3 1 4 6 โ ์ฒซ๋ฒ์งธ ์ฌ์ดํด ๋ ๋๋ฒ์งธ๋ ์ผ์ชฝ์์ ์ฒ์๋ถํฐ ๋ฐ๊ฟ
+
+![](https://velog.velcdn.com/images/prettylee620/post/24c2746c-813b-40b2-ab58-faffd2907fc7/image.png)
+
+#### โจ ๋ฒ๋ธ์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋
+
+1. **comparisons(๋น๊ต)** : `N-1`
+
+ N(item์ ๋ง์ง๋ง ๋ฒํธ), ๋ฐฐ์ด์ N-1์ ์์ดํ
์ ๋น๊ต
+
+ EX. ์์ดํ
์ด 6๊ฐ๋ฉด, 5๋ฒ ๋น๊ต
+2. **swap(๊ตํ)**: ์ต์
์ ๊ฒฝ์ฐ, ๋ชจ๋ ์์ดํ
์ ๊ตํํด์ผ ํจ
+3. ๊ทธ๋ํ
+
+![](https://velog.velcdn.com/images/prettylee620/post/87f518fc-a9d7-465a-a676-504ae5eddbca/image.png)
+
+#### โจ ๋ฒ๋ธ์ ๋ ฌ ์์ 1
+
+> ๋ฒ๋ธ ์ ๋ ฌ์ ๊ฐ๋จํ์ง๋ง ํฐ ๋ฆฌ์คํธ์ ๋ํด์๋ ๋นํจ์จ์ ์ผ ์ ์์ผ๋ ์ฐธ๊ณ
+
+```java
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class BubbleSorting {
+
+ public static void main(String[] args){
+ ArrayList dataList = new ArrayList();
+ dataList.add(9);
+ dataList.add(2);
+ dataList.add(4);
+ dataList.add(8);
+ dataList.add(1);
+
+ // 9, 7, 1
+ for(int index=0; index < dataList.size()-1; index++) {
+ boolean swap = false;
+ // 7, 9, 1
+ for(int index2 = 0; index2 < dataList.size() - 1 - index; index2++) {
+ if (dataList.get(index2) > dataList.get(index2 + 1)) {
+ Collections.swap(dataList, index2, index2 + 1);
+ // 1, 7, 9
+ swap = true;
+ }
+ }
+ }
+ System.out.println(dataList);
+ }
+}
+```
+
+#### โจ ๋ฒ๋ธ์ ๋ ฌ ์์ 2
+
+* ๊ธฐ์กด ์ฝ๋์ ํด๋์ค๋ฅผ ์ด์ฉํด์ ๋ง๋๋ ๋ฐฉ๋ฒ
+
+1. BubbleSorting2
+
+```java
+package sorting;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class BubbleSorting2
+{
+
+ public void sort(ArrayList arr) {
+ ArrayList dataList = new ArrayList();
+ dataList = arr;
+
+ for (int index = 0; index < dataList.size() - 1; index++)
+ {
+ boolean swap = false;
+
+ for (int index2 = 0; index2 < dataList.size() - 1 - index; index2++)
+ {
+ if (dataList.get(index2) > dataList.get(index2 + 1))
+ {
+ Collections.swap(dataList, index2, index2 + 1);
+ swap = true;
+ }
+ }
+ System.out.println(dataList);
+ }
+ }
+
+}
+```
+
+2. BublleSorting
+
+```java
+import java.util.ArrayList;
+
+public class BubbleSorting
+{
+
+ public static void main(String[] args)
+ {
+ ArrayList testList = new ArrayList();
+
+ for (int index = 0; index < 10; index++)
+ {
+ testList.add((int)(Math.random() * 100));
+
+ }
+ System.out.println(testList);
+
+ BubbleSorting2 bSort = new BubbleSorting2();
+
+ bSort.sort(testList);
+
+ }
+
+}
+```
+
+#### โจ ๋ฒ๋ธ์ ๋ ฌ ์์ 3
+
+1. ๋ฌธ์ ๋งํฌ : https://jungol.co.kr/problem/1157?cursor=eyJwcm9ibGVtc2V0IjoiNiIsImZpZWxkIjo2LCJpZHgiOjJ9
+2. ์ฝ๋
+
+```java
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Scanner;
+
+public class BubbleSorting3 {
+
+ private ArrayList sort(ArrayList dataList){
+
+ for(int index=0; index < dataList.size()-1; index++) {
+ boolean swap = false;
+
+ for(int index2 = 0; index2 < dataList.size() - 1 - index; index2++) {
+
+ if (dataList.get(index2) > dataList.get(index2 + 1)) {
+
+ Collections.swap(dataList, index2, index2 + 1);
+ swap = true;
+ }
+
+ }
+
+ for(int i = 0; i dataList = new ArrayList();
+
+ int n = in.nextInt();
+
+ for(int i=0; i arr[j+1])
+ {
+ int temp = arr[j];
+ arr[j]=arr[j+1];
+ arr[j+1]=temp;
+
+ }
+
+ }
+
+ for (int j = 0; j < numlength; j++) {
+ System.out.printf("%d ", arr[j]);
+ }
+ System.out.println();
+
+
+
+
+ }
+
+ }
+
+}
+```
+
+4. ํ์ด์ฌ ์ฝ๋
+
+```java
+def bubble_sort(arr):
+ end = len(arr) - 1
+ while end > 0:
+ last_swap = 0
+ for i in range(end):
+ if arr[i] > arr[i + 1]:
+ arr[i], arr[i + 1] = arr[i + 1], arr[i]
+ last_swap = i
+ end = last_swap
+ print(arr)
+```
+
+### ๐ ์ ํ์ ๋ ฌ
+
+* ์ ์ฒด **๋ชจ๋ ์์ดํ
์ค์บ**
+* ๋ฐ์ดํฐ๊ฐ ๋ฌด์์๋ก ์ฌ๋ฌ ๊ฐ ์์ ๋, ์ด์ค์์ **๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํ**ํด ๋งจ ์์ ์๋ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๊ณ , ๊ทธ๋ค์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด ์์์ ๋ ๋ฒ์งธ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๋ ๊ณผ์ **๋ฐ๋ณต**
+* ํ์ฌ **๋ฐ์ดํฐ์ ์ํ ์๊ด์์ด** ๋ฌด์กฐ๊ฑด ๋ชจ๋ ์์๋ฅผ ๋น๊ตํ๊ณ ์์น๋ฅผ ๋ฐ๊ฟ
+* `๊ฐ์ฅ ์์ ๊ฒ`์ ์ ํ, `๋นํจ์จ์ `
+
+#### โจ ์ ๋ ฌ๋ฐฉ๋ฒ
+
+1. ์ ์ฒด ์์ดํ
์ค **๊ฐ์ฅ ์์ ์์ดํ
์ ์์น**๋ฅผ ๊ทธ ์์น๋ฅผ ๋ณ์์ ์ ์ฅ
+2. 5๋ถํฐ ์ฐจ๋ก๋ก ํ์ธ ํ ๋งจ ์ฒ์์ **5๊ฐ ์ ์ผ ์๊ธฐ๋๋ฌธ์** ์์น๋ฅผ ๋ณ์์ ์ ์ฅ
+3. ๊ทธ ๋ค์ 2์์ **2๊ฐ 5๋ณด๋ค ์์ผ๋๊น** ์์น๋ฅผ ๋ณ์์ ์ ์ฅ
+4. ์ญ ํ๋ค๊ฐ **1์ด 2๋ณด๋ค ์์ผ๋๊น** ์์น๋ฅผ ๋ณ์ ์ ์ฅ
+5. 4๊น์ง ํ์ธ ํ ์ฌ์ดํด์ ๋๋
+
+ โ **๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ์ซ์**๊ฐ ์ด๋์ ์๋์ง ์๋ค
+6. ๊ทธ ๋ค์ `swaps(๋ฐ๊พธ๊ธฐ)` : **๊ฐ์ฅ ์์ ์ซ์(์์น**๋ฅผ ์์ง!) ๊ทธ๊ฒ์ **์ฒซ ๋ฒ์งธ ์์ดํ
๊ณผ** ๋ฐ๊ฟ
+7. ๊ทธ ๋ค์ ์ฌ์ดํด์ ์งํ์ 1๋ถํฐ ์์ํ์ง ์์. **1์** `์ ๋ ฌ`๋ ์ซ์, **์ ๋ ฌ๋์ง ์์** ๋ถ๋ถ ์ค์์ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ์
+8. ์ด๊ฒ์ ๋ฐ๋ณต
+
+![](https://velog.velcdn.com/images/prettylee620/post/d502821c-893b-44ff-99fb-2594dea9ca84/image.png)
+
+#### โจ ์ ํ์ ๋ ฌ ์์ 1
+
+```java
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class SelectionSortingEx {
+
+ private ArrayList sort(ArrayList dataList){
+ int lowest;
+ for(int stand = 0; stand < dataList.size()-1; stand++){
+ lowest = stand;
+ for(int index = stand+1; index < dataList.size(); index++){
+ if(dataList.get(lowest) > dataList.get(index)) {
+ lowest = index;
+ }
+ }
+ Collections.swap(dataList, lowest, stand);
+ }
+
+ return dataList;
+ }
+
+ public static void main(String[] args){
+ ArrayList testData = new ArrayList();
+
+ for(int i=0; i<10; i++){
+ testData.add((int)(Math.random()*100));
+ }
+ SelectionSortingEx selection = new SelectionSortingEx();
+ System.out.println(selection.sort(testData));
+ }
+}
+```
+
+#### โจ ์ ํ์ ๋ ฌ ์์ 2
+
+1. ์ ์ฌ ๋ฌธ์ : https://jungol.co.kr/problem/1146/submission?cursor=eyJwcm9ibGVtc2V0IjoiNiIsImZpZWxkIjo2LCJpZHgiOjB9
+2. ์ฝ๋
+
+```java
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Scanner;
+
+public class SelectionSortingEx2 {
+
+ private ArrayList sort(ArrayList dataList){
+ int lowest;
+ for(int stand = 0; stand < dataList.size()-1; stand++){
+ lowest = stand;
+ for(int index = stand+1; index < dataList.size(); index++){
+ if(dataList.get(lowest) > dataList.get(index)) {
+ lowest = index;
+ }
+ }
+ Collections.swap(dataList, lowest, stand);
+ for(int i = 0; i testData = new ArrayList();
+
+ int n = in.nextInt();
+
+ for(int i=0; i arr[j]) {
+ small = arr[j];
+ pos = j;
+ }
+ }
+ int c = arr[i];
+ arr[i] = arr[pos];
+ arr[pos] = c;
+
+ for (j = 0; j < n; j++) {
+ System.out.printf("%d ", arr[j]);
+ }
+ System.out.printf("\n");
+
+ }
+ }
+
+}
+
+```
+
+4. ํ์ด์ฌ ์ฝ๋
+
+```java
+def selection_sort(arr):
+ for i in range(len(arr) - 1):
+ min_idx = i
+ for j in range(i + 1, len(arr)):
+ if arr[j] < arr[min_idx]:
+ min_idx = j
+ arr[i], arr[min_idx] = arr[min_idx], arr[i]
+ print(arr)
+```
+
+### ๐ ์ฝ์
์ ๋ ฌ
+
+* **ํ์ํ ์์ดํ
๋ง** ์ค์บ
+* ์ ํ์ ๋ ฌ๋ณด๋ค ๋น ๋ฆ, ํจ์จ์
+* ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ํ์ธํ๋ฉฐ, ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ์์น์ ์ฝ์
+
+โ ํ์ํ ๋๋ง ์์น๋ฅผ ๋ฐ๊พธ๋ฏ๋ก **๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์์ ๋** ํจ์ฌ ํจ์จ์
+
+* ํน์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ์์น์ โ์ฝ์
โํ๋ค๋ ์๋ฏธ
+
+ โ ํน์ ํ ๋ฐ์ดํฐ๊ฐ ์ ์ ํ ์์น์ ๋ค์ด๊ฐ๊ธฐ ์ด์ ์, **๊ทธ ์๊น์ง์ ๋ฐ์ดํฐ๋ ์ด๋ฏธ `์ ๋ ฌ`๋์ด ์๋ค**๊ณ ๊ฐ์
+
+#### ์ ๋ ฌ๋ฐฉ๋ฒ
+
+1. ์ธ๋ฑ์ค 1๋ถํฐ ์์์, **์ผ์ชฝ์** ์ซ์ โ2โ๋ณด๋ค ํฐ ์ซ์๊ฐ ์๋์ง ํ์ธ
+
+ โ ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ๋ถํฐ ์์ํ๋ ์ด์ ๋ **์ฒซ ๋ฒ์งธ๋ ๊ทธ ์์ฒด๋ก ์ ๋ ฌ๋์ด ์๋ค**๊ณ ํ๋จ
+
+ ```
+ Left > Right
+ ```
+2. 2์ 5 ์๋ฆฌ ๋ฐ๊พธ๊ธฐ `swap`
+3. 2๋ฒ์งธ ์ฌ์ดํด : **6์ ์ ํ**, ์ผ์ชฝ์ ๋ ํฐ ์ซ์๊ฐ ์๋์ง ํ์ธ, ์ค๋ฅธ์ชฝ์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๊ณ์ ์งํ
+
+ ```
+ Left < Right
+ ```
+4. 3๋ฒ์งธ ์ฌ์ดํด : **3์ ์ ํ**, ์ผ์ชฝ์ ๋ ํฐ ์ซ์๊ฐ ์๋์ง ํ์ธ,
+
+ ```
+ Left > Right
+ ```
+5. 6๊ณผ 3์ `swap`
+6. 3 ์ผ์ชฝ์ ์๋ 5๋ฅผ ๋น๊ต(comparisons)
+
+ ```
+ Left > Right
+ ```
+7. 5๊ณผ 3์ `swap`
+8. 3์ ์ผ์ชฝ์ ์๋ 2๋ 3๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ์๋ฐ๊ฟ
+9. ๋ฐ๋ณต
+
+> โ ์ฝ์
์ ๋ ฌ์, ์ ๋ ฌ์ด ์ด๋ฃจ์ด์ง ์์๋ ํญ์ `์ค๋ฆ์ฐจ์`์ ์ ์งํ๊ธฐ ๋๋ฌธ์, ํน์ ํ ๋ฐ์ดํฐ๊ฐ **์ฝ์
๋ ์์น๋ฅผ ์ ์ ํ ๋**(์ฝ์
๋ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํ์ฌ ์ผ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์ด๋ํ ๋) ์ฝ์
๋ ๋ฐ์ดํฐ๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ฉด ๊ทธ ์์น์์ ๋ฉ์ถ๋ฉด ๋๋ค.
+
+> ๐ก ํน์ ํ ๋ฐ์ดํฐ์ **์ผ์ชฝ์ ์๋ ๋ฐ์ดํฐ๋ค์ ์ด๋ฏธ ์ ๋ ฌ์ด ๋ ์ํ**์ด๋ฏ๋ก ์๊ธฐ๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ฌ๋ค๋ฉด, ๋ ์ด์ ๋ฐ์ดํฐ ์ดํด๋ณผ ํ์ ์์ด ์ฝ์
ํ๋ฉด ๋จ
+
+#### โจ ์ฝ์
์ ๋ ฌ ์ฝ๋
+
+```java
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class InsertionSort {
+
+ public ArrayList sort(ArrayList dataList){
+ for(int index=0; index 0; index2--){
+ if(dataList.get(index2) < dataList.get(index2-1)){
+ Collections.swap(dataList, index2, index2-1);
+ }
+ else{
+ break;
+ }
+ }
+ }
+ return dataList;
+ }
+
+ public static void main(String[] args) {
+ ArrayList dataList = new ArrayList();
+
+ for (int i = 0; i < 10; i++) {
+ dataList.add((int) (Math.random() * 100));
+ }
+ InsertionSort insertion = new InsertionSort();
+ System.out.println(insertion.sort(dataList));
+ }
+}
+```
+
+#### โจ ์ฝ์
์ ๋ ฌ ์ ์ฌ ์์
+
+1. ๋ฌธ์ ๋งํฌ : https://jungol.co.kr/problem/1158?cursor=eyJwcm9ibGVtc2V0IjoiNiIsImZpZWxkIjo2LCJpZHgiOjF9
+2. ์ฝ๋
+
+```java
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Scanner;
+
+public class Main {
+
+ public ArrayList sort(ArrayList dataList){
+ for(int index=0; index 0; index2--){
+ if(dataList.get(index2) < dataList.get(index2-1)){
+ Collections.swap(dataList, index2, index2-1);
+ }
+ else{
+ break;
+ }
+ }
+ for(int i = 0; i dataList = new ArrayList();
+ Scanner in = new Scanner(System.in);
+ int n = in.nextInt();
+
+ for (int i = 0; i < n; i++) {
+ dataList.add(in.nextInt());
+ }
+ Main insertion = new Main();
+ insertion.sort(dataList);
+ }
+}
+```
+
+3. ๋ค๋ฅธ ์ฌ๋ ์ฝ๋
+
+```java
+import java.util.Scanner;
+
+public class Main {
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+ Scanner scan = new Scanner(System.in);
+
+ int n, i, j;
+ int arr[] = new int[101];
+
+ n = scan.nextInt();
+
+ for (i = 0; i < n; i++) {
+ arr[i] = scan.nextInt();
+ }
+
+ for (i = 1; i < n; i++) {
+ for (j = i; j > 0; j--) {
+ if (arr[j] < arr[j - 1])
+ {
+ int c = arr[j];
+ arr[j]=arr[j-1];
+ arr[j-1]=c;
+ }
+ else break;
+ }
+ for (j = 0; j < n; j++) {
+ System.out.printf("%d ", arr[j]);
+ }
+ System.out.printf("\n");
+ }
+ }
+}
+```
+
+#### โจ ์์
+
+```python
+array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
+
+for i in range(1, len(array)):
+ for j in range(i, 0, -1): # j๋ณ์๊ฐ ์ธ๋ฑ์ค i๋ถํฐ 1๊น์ง 1์ฉ ๊ฐ์ํ๋ฉด์ ๋ฐ๋ณตํ๋ ๋ฌธ๋ฒ
+ if array[j] < array[j-1]: # ํ ์นธ ์ฉ ์ผ์ชฝ์ผ๋ก ์ด๋
+ array[j], array[j-1] = array[j-1], array[j]
+ else: # ์๊ธฐ๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ฉด ๊ทธ ์์น์์ ๋ฉ์ถค
+ break
+print(array)
+```
+
+> ๐ก range์ ์ธ ๋ฒ์งธ ๋ณ์ : range์ ๋งค๊ฐ๋ณ์๋ 3๊ฐ`(start, end, step)`์ด๋ค. ์ธ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ธ step์ -1์ด ๋ค์ด๊ฐ๋ฉด start์ธ๋ฑ์ค๋ถํฐ ์์ํด์ end+1์ธ๋ฑ์ค๊น์ง 1์ฉ ๊ฐ์ํ๋ค.
+
+#### โจ ์ฝ์
์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋
+
+* ์๊ฐ๋ณต์ก๋ : $`O(N^2)`$
+
+ โ **2์ค ๋ฐ๋ณต๋ฌธ**์ ์ด์ฉํ๊ธฐ ๋๋ฌธ
+
+![](https://velog.velcdn.com/images/prettylee620/post/596fedfe-8e75-40a3-a975-08e13cd66aba/image.png)
+
+โ ์ ํ์ ๋ ฌ๋ณด๋ค ๋นจ๋ผ๋ ์๊ฐ๋ณต์ก๋๋ `๊ฐ์`
+
+โ ์ฝ์
์ ๋ ฌ์ ํ์ฌ ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์๋ ์ํ๋ผ๋ฉด ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋์
+
+> โจ ์๊ฐ๋ณต์ก๋๊ฐ **๋์ผํ ์ด์ **๋ ์ต์
์ ์๋๋ฆฌ์ค๋ฅผ ๋ณด์ง๋ง๊ณ , **ํ๊ท ** ์๋๋ฆฌ์ค๋ฅผ ๋ด์ผ ํ๊ธฐ ๋๋ฌธ
+
+## ์ฝ์
์ ๋ ฌ, ๋ฒ๋ธ ์ ๋ ฌ, ์ ํ ์ ๋ ฌ ์ธ ๊ฐ์ง ๋น๊ต
+
+1. ๋ฒ๋ธ ์ ๋ ฌ
+
+* ๋งจ ์ฒ์์ ์๋ ๊ฒ์ ์ ์ฅ ํ ๋ค์ ์๋ ๊ฒ์ ๋น๊ต ํด์ ๋ค์ ๊ฒ์ด ์ง๊ธ ์๋ ๊ฒ๋ณด๋ค ์ ๋ค๋ฉด ๊ทธ ์๋ฅผ swapํจ โ ์ด๋ฐ์์ผ๋ก ๋ฐ๋ณต
+
+```java
+public static void bubbleSort(int[] array) {
+ int n = array.length;
+ for (int i = 0; i < n - 1; i++) { // ๋ชจ๋ ์์๋ฅผ ์ํ
+ for (int j = 0; j < n - i - 1; j++) { // i๊น์ง๋ ์ด๋ฏธ ์ ๋ ฌ๋์์ผ๋ฏ๋ก ๋น๊ตํ ํ์๊ฐ ์์
+ if (array[j] > array[j + 1]) { // ๋ค์ ์์๊ฐ ํ์ฌ ์์๋ณด๋ค ์์ผ๋ฉด ๊ตํ
+ int temp = array[j];
+ array[j] = array[j + 1];
+ array[j + 1] = temp;
+ }
+ }
+ }
+}
+```
+
+* ํ์ด์ฌ ์ฝ๋
+
+```java
+def bubble_sort(arr):
+ n = len(arr)
+ for i in range(n):
+ for j in range(0, n-i-1):
+ if arr[j] > arr[j+1]:
+ arr[j], arr[j+1] = arr[j+1], arr[j]
+
+# ์ฌ์ฉ ์์
+arr = [5, 3, 8, 2, 1, 4]
+bubble_sort(arr)
+print("๋ฒ๋ธ ์ ๋ ฌ ๊ฒฐ๊ณผ:", arr)
+```
+
+2. ์ฝ์
์ ๋ ฌ
+
+* ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ด๋ด ์ผ๋จ, **๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํ**ํด ๋งจ ์์ ์๋ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๊ณ , ๊ทธ๋ค์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด ์์์ ๋ ๋ฒ์งธ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๋ ๊ณผ์ **๋ฐ๋ณต**
+
+```java
+public static void insertionSort(int[] array) {
+ int n = array.length;
+ for (int i = 1; i < n; i++) { // ๋ ๋ฒ์งธ ์์๋ถํฐ ์์
+ int key = array[i]; // ํ์ฌ ์์๋ฅผ ์ ์ฅ
+ int j = i - 1;
+ while (j >= 0 && array[j] > key) { // ์ผ์ชฝ์ ๋ชจ๋ ์์์ ๋น๊ตํ์ฌ key๋ณด๋ค ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
+ array[j + 1] = array[j];
+ j--;
+ }
+ array[j + 1] = key; // key ๊ฐ์ ์ ์ ํ ์์น์ ์ฝ์
+ }
+}
+```
+
+* ํ์ด์ฌ ์ฝ๋
+
+```java
+def insertion_sort(arr):
+ n = len(arr)
+ for i in range(1, n):
+ key = arr[i]
+ j = i - 1
+ while j >= 0 and key < arr[j]:
+ arr[j + 1] = arr[j]
+ j -= 1
+ arr[j + 1] = key
+
+# ์ฌ์ฉ ์์
+arr = [5, 3, 8, 2, 1, 4]
+insertion_sort(arr)
+print("์ฝ์
์ ๋ ฌ ๊ฒฐ๊ณผ:", arr)
+```
+
+3. ์ ํ ์ ๋ ฌ
+
+* ํ์ํ ๋๋ง ๋ฐ๊ฟ์ ํจ์จ์
+* ๋ ๋ฒ์งธ ์ฆ, 1์ธ๋ฑ์ค๋ถํฐ ํ์ด๋ด ์๋ ์ฒซ ๋ฒ์งธ๊บผ๋ ์ ๋ ฌ๋์ด ์๋ค๊ณ ์๊ฐํ๋๊น
+* ๊ทธ๋ฆฌ๊ณ ๋๋ฒ์งธ๊ฐ ์ผ์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์ผ์ชฝ์ด ๋ ํฌ๋ค๋ฉด ๋ฐ๊ฟ
+* ์ด๋ฐ์์ผ๋ก ์ ์ ํ ์์น์ ๋ฃ๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์๋ค๊ณ ํ๋จ๋๋ ๊ฒ์ ์ข์
+
+```java
+public static void selectionSort(int[] array) {
+ int n = array.length;
+ for (int i = 0; i < n - 1; i++) { // ๋งจ ๋ง์ง๋ง ์์๋ ์๋์ผ๋ก ์ ๋ ฌ๋๋ฏ๋ก n-1๊น์ง๋ง ์ํ
+ int minIndex = i;
+ for (int j = i + 1; j < n; j++) { // i ์ดํ์ ์์๋ค๊ณผ ๋น๊ตํ์ฌ ์ต์๊ฐ์ ์์น๋ฅผ ์ฐพ์
+ if (array[j] < array[minIndex]) {
+ minIndex = j;
+ }
+ }
+ int temp = array[minIndex]; // ์ต์๊ฐ์ ํ์ฌ ์์น๋ก ์ด๋
+ array[minIndex] = array[i];
+ array[i] = temp;
+ }
+}
+```
+
+* ํ์ด์ฌ ์ฝ๋
+
+```java
+def selection_sort(arr):
+ n = len(arr)
+ for i in range(n):
+ min_index = i
+ for j in range(i+1, n):
+ if arr[j] < arr[min_index]:
+ min_index = j
+ arr[i], arr[min_index] = arr[min_index], arr[i]
+
+# ์ฌ์ฉ ์์
+arr = [5, 3, 8, 2, 1, 4]
+selection_sort(arr)
+print("์ ํ ์ ๋ ฌ ๊ฒฐ๊ณผ:", arr)
+```
diff --git "a/developLog/algorithm-datastructure/data-structure/_ Array vs ArrayList vs LinkedList \354\260\250\354\235\264_.md" "b/developLog/algorithm-datastructure/data-structure/_ Array vs ArrayList vs LinkedList \354\260\250\354\235\264_.md"
new file mode 100644
index 0000000..ccbd56c
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ Array vs ArrayList vs LinkedList \354\260\250\354\235\264_.md"
@@ -0,0 +1,138 @@
+# Array vs ArrayList vs LinkedList ์ฐจ์ด
+
+> ์ถ์ฒ : https://gyoogle.dev/blog/computer-science/data-structure/Array%20vs%20ArrayList%20vs%20LinkedList.html
+
+## 1. tmi ์ ๋ฆฌํ๋ ์ด์
+
+> ์ค๋ ์คํฐ๋ ํ๋ ๋ฐ ๋ค๋ฅธ ํ์๋ถ๋ค์ ์๊ธฐํด์ค ๊ฒ์ ๋ฐํ์ผ๋ก ์ดํดํ ๊ฒ๊ณผ ์ฐพ์๋ณธ ๊ฑฐ ๊ธฐ๋ฐ์ผ๋ก ์ข ๋ ์ ๋ฆฌํด์ผ ํ ๊ฒ ๊ฐ์์ ์ ๋ฆฌํจ + 8/17 ์์
์๊ฐ ์ ๋ฆฌ ๋ด์ฉ ์ถ๊ฐ
+
+## 2. Array(๋ฐฐ์ด)
+
+![](https://velog.velcdn.com/images/prettylee620/post/27145c70-46a5-439e-9919-d1521ee3f818/image.png)
+
+1. ์ ์ธํ ๋ ํฌ๊ธฐ์ ๋ฐ์ดํฐ ํ์
์ ์ง์ ํด์ผ ํ๋ค.
+
+```java
+int arr[10];
+String arr[5];
+```
+
+```java
+int[] myArray = new int[10];
+```
+
+2. ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด index๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์์น๋ฅผ ๋ฐ๋ก ์ ์ ์์ด ๊ฒ์์ ํธํ ์ฅ์ ์ด ์๋ค.
+3. ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ฉ์ด
+
+### ๐ ๋จ์
+
+1. ์ ์ ํ ๋น(static allocation) : ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ ์ธ ํ ๋ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ฉฐ, ํ ๋ฒ ์์ฑ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ด๋ ต๋ค.
+2. ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒ์ ๋ฒ๊ฑฐ๋กญ๋ค. ์๋ํ๋ฉด ์๋๊ฐ์ ๋ฐ์ด๋ด๊ณ ํด๋น INDEX์ ๋ฎ์ด์์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
+
+## 3. ArrayList
+
+> List๋ array์ฒ๋ผ ํฌ๊ธฐ๋ฅผ ์ ํด์ฃผ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐ์ ๋ฌธ์ ์ธ ๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋์จ ๊ฒ์ผ๋ก array์์๋ index๊ฐ ์ค์ํ๋ค๋ฉด, List์์๋ ์์๊ฐ ์ค์ํ๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/ef3d50b8-eff6-42aa-84c8-d1f28de8199b/image.png)
+
+1. ArrayList๋ ํฌ๊ธฐ๊ฐ ๋์ ์ผ๋ก ํ์ฅ๋๋ ๋ฐฐ์ด์ ๊ตฌํ์ฒด๋ก ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํด๋ ๋ด๋ถ์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ์กฐ์ ๋๋ค.
+2. ArrayList๋ ๊ฐ์ฒด์ ์ ์ฅํ๋ฉฐ, ๊ฐ์ฒด ์ถ๊ฐ/์ญ์ ์ ์ฉ์ดํ๋๋ก ๊ตฌํ๋์ด ์๋ค.
+3. ArrayList๋ ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด๋ก ๊ตฌํ๋์ง๋ง, ํฌ๊ธฐ๊ฐ ๋์ ์ผ๋ก ํ์ฅ๋๋ฏ๋ก **๋ฐฐ์ด์ ํฌ๊ธฐ ์ ํ ๊ทน๋ณต ๊ฐ๋ฅ**
+4. Java์ ์ ๋ค๋ฆญ(Generic) ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ArrayList์ ํ์
์ ๋ฏธ๋ฆฌ ์ง์ ํ์ฌ ์ฌ์ฉํจ์ผ๋ก์จ ํ์
์์ ์ฑ์ ํ๋ณด
+
+### ๐ ํน์ง
+
+1. ์ฐ์์ ์ธ ๋ฐ์ดํฐ์ ๋ฆฌ์คํธ(์ค๊ฐ์ ๋น ๊ณต๊ฐ์ด ์์ผ๋ฉด ์๋๋ค.)
+2. ArrayList ํด๋์ค๋ ๋ด๋ถ์ ์ผ๋ก Object\[] ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ์์๋ฅผ ์ ์ฅ
+3. ๋ฐฐ์ด์ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ ์์์ ๋น ๋ฅด๊ฒ ์ ๊ทผ ๊ฐ๋ฅ
+4. ๋ฐ์ดํฐ์ ์ ์ฌ๋(Capacity)์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ผ๋ก ๊ณต๊ฐ์ ๋๋ฆฌ๊ฑฐ๋ ์ค์ผ ์ ์๋ค.
+
+### ๐ ๋จ์
+
+1. ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ ์ค๊ฐ์ ์ฝ์
/์ญ์ ์, ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ๋จ์ ์ด ์กด์ฌํ๋ค. (๋ํ๊ฑฐ๋ ๋บ๋๋ง๋ค ์ค์ค์ด ๋น๊ฒจ์ง๊ฑฐ๋ ๋ฐ๋ ค๋ ๋ ์งํ๋๋ ์ฐ์ฐ์ด ์ถ๊ฐ, ๋ฉ๋ชจ๋ฆฌ๋ ๋ญ๋น..) ๋น ๊ณต๊ฐ์ด ์๊ธฐ์ง ์๋๋ก ์ธ๋ฑ์ค๋ฅผ ์กฐ์ ํด์ผ ํ๋ ๊ณผ์ ์ด ํ์ํ๋ฉฐ ๋์์ด ๋๋ฆฌ๋ค.
+2. ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก **๋์ผํ ํ์
์ ์์๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์** ํ ๋ฒ ์์ฑํ ArrayList๋ ๊ทธ ๋ด๋ถ์ ์์ ํ์
๋ณ๊ฒฝํ๊ธฐ๋ ์ด๋ ต๋ค.
+3. ์กฐํ ๊ธฐ๋ฅ์ ์ ํฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
+
+```java
+import java.util.ArrayList;
+
+// ArrayList ์์ฑ
+ArrayList myList = new ArrayList<>();
+
+// ์์ ์ถ๊ฐ
+myList.add(10);
+myList.add(20);
+
+// ์์ ์ ๊ทผ
+int element = myList.get(0);
+
+// ์์ ์ญ์
+myList.remove(0);
+```
+
+## 4. LinkedList
+
+> ์ฐ๊ฒฐ๋ฆฌ์คํธ์๋ ๋จ์ผ, ๋ค์ค ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. ์ข
๋ฅ๊ฐ ๋ฌด์์ด๋ , ํ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋์ ํฌ์ธํฐ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐฉ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/176f58be-fcac-4f30-8abb-84e9cd8b5caa/image.png)
+
+1. ์ด๋ฐ ๋ฐฉ์์ ํ์ฉํ๋ฉด์, ๋ฐ์ดํฐ์ ์ค๊ฐ์ ์ฝ์
๋ฐ ์ญ์ ๋ฅผ ํ๋๋ผ๋ ์ ์ฒด๋ฅผ ๋์ง ์์๋ ์ด์ ๊ฐ๊ณผ ๋ค์๊ฐ์ด ๊ฐ๋ฅด์ผฐ๋ ์ฃผ์๊ฐ๋ง ์์ ํ์ฌ ์ฐ๊ฒฐ์์ผ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ์งํํ ์ ์๋ค.
+2. ์ด๋ ๊ฒ๋ง ๋ณด๋ฉด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ ๊ฐ์๋ณด์ด์ง๋ง, `List์ k๋ฒ์งธ ๊ฐ์ ์ฐพ์๋ผ`์์๋ ๋นํจ์จ์
+
+### ๐ ๋จ์
+
+1. array๋ arrayList์์ index๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์์ด ๋น ๋ฅด์ง๋ง, LinkedList๋ ์ฒ์๋ถํฐ ์ดํด๋ด์ผํ๋ฏ๋ก(์์ฐจ) ๊ฒ์์ ์์ด์๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์
+2. ์ํฉ์ ๋ง๊ฒ ํ๋ ๊ฒ์ด ์ข์
+
+## 5. ์ ์ฒด ๋น๊ต ์์ฝ
+
+### ๐ ํฌ๊ธฐ ์ ํ
+
+๋ฐฐ์ด: ๊ณ ์ ํฌ๊ธฐ, ๋ณ๊ฒฝ์ด ์ด๋ ค์. ArrayList: ํฌ๊ธฐ ๋์ ์กฐ์ ๊ฐ๋ฅ. Linked List: ํฌ๊ธฐ ๋์ ์กฐ์ ๊ฐ๋ฅ.
+
+### ๐์์ ์ถ๊ฐ/์ญ์
+
+๋ฐฐ์ด: ์์ ์ถ๊ฐ/์ญ์ ์ ์ ์ฝ์ด ์์. ArrayList: ์์ ์ถ๊ฐ/์ญ์ ์ฉ์ด. Linked List: ์์ ์ถ๊ฐ/์ญ์ ์ฉ์ด (ํนํ ์ค๊ฐ์ ์ฝ์
/์ญ์ ).
+
+### ๐ ๊ฒ์ ์๋
+
+๋ฐฐ์ด: ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ ๊ฐ๋ฅ. ArrayList: ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ ๊ฐ๋ฅ. (๊ฒ์์ ๋ฐฐ์ด๊ณผ ์ ์ฌ) Linked List: ๊ฒ์ ์๋๊ฐ ๋ฐฐ์ด, ArrayList์ ๋นํด ๋๋ฆผ.
+
+### ๐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
+
+๋ฐฐ์ด: ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ. ArrayList: ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด ์ฌ์ฉ, ํฌ๊ธฐ ์กฐ์ ๊ฐ๋ฅ. Linked List: ๊ฐ ์์๊ฐ ๋
ธ๋๋ก ์ฐ๊ฒฐ๋์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ ์ฌ์ฉ.
+
+### ๐ ์ฌ์ฉ ์ฌ๋ก
+
+๋ฐฐ์ด: ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ๊ฑฐ์ ์๋ ๊ฒฝ์ฐ, ๋น ๋ฅธ ์ธ๋ฑ์ค ์ ๊ทผ์ด ์ค์ํ ๊ฒฝ์ฐ. ArrayList: ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ, ๋น ๋ฅธ ์ธ๋ฑ์ค ์ ๊ทผ์ด ์ค์ํ ๊ฒฝ์ฐ. Linked List: ์์์ ์ถ๊ฐ/์ญ์ ๊ฐ ๋น๋ฒํ ๊ฒฝ์ฐ.
+
+## 6. ์ฐธ๊ณ
+
+> 8/23 ๊ตญ๋น์์ ํ
์คํธ ๋ณด๋ค๊ฐ ๋์น ๋ถ๋ถ์ธ ๊ฒ ๊ฐ์ ์ถ๊ฐํจ
+
+### ๐ ๋ชจ๋ ๋ฆฌ์คํธ๋ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ์ ์ผ ๋จผ์ ๋๊ฐ๋ค๋ผ๋ ๋ง์ ๋ง๋ ๋ง์ผ๊น?
+
+> ์ผ๋จ ๋ต์ NO์ด๋ค
+
+1. `ArrayList`
+
+* ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
+* ๋ฐ์ดํฐ๊ฐ ์์ฐจ์ ์ผ๋ก ์ ์ฅ๋๋ฉฐ, ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์๋ค.
+* ์ด ๋๋ฌธ์ ArrayList์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ฉด ๊ทธ ๋ค์ ์ธ๋ฑ์ค์ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ก ๋น๊ฒจ์ง๋ค.
+* ๋ฐ๋ผ์ "๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ์ ์ผ ๋จผ์ ๋๊ฐ๋ค"๋ ๊ฒ์ **์ญ์ ๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ ํด๋น ์์น์ null ๋๋ ๋ค๋ฅธ ๊ฐ์ด ๋ค์ด์๋ ์ฑ๋ก ๋จ์์๊ฒ ๋๋ค.**
+
+2. `LinkedList`
+
+* ๊ฐ ๋ฐ์ดํฐ๋ ์ด์ ๋ฐ์ดํฐ์ ๋ค์ ๋ฐ์ดํฐ์ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
+* ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ๋ ์ด์ ๋ฐ์ดํฐ์ ๋ค์ ๋ฐ์ดํฐ์ ์ฐธ์กฐ๋ง ๋ณ๊ฒฝ๋๋ฏ๋ก, "๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ์ ์ผ ๋จผ์ ๋๊ฐ๋ค"๋ ๊ท์น์ด ์ผ๋ฐ์ ์ผ๋ก ์ ์ง
+
+๋ฐ๋ผ์ "๋ชจ๋ ๋ฆฌ์คํธ๋ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ์ ์ผ ๋จผ์ ๋๊ฐ๋ค"๋ ์ค๋ช
์ **ArrayList์ ๊ฐ์ ๋ฐฐ์ด ๊ธฐ๋ฐ ๋ฆฌ์คํธ์์๋ ์ ํํ์ง ์์ ์ ์๋ค.**
+
+### ๐ LinkedList์๋ ์ธ๋ฑ์ค๋ ์๋ค.
+
+1. LinkedList๋ ๊ฐ ์์์ ์ธ๋ฑ์ค๊ฐ ์๋ค. ํ์ง๋ง ArrayList์๋ ๋ค๋ฅด๊ฒ LinkedList์\*\* ์ธ๋ฑ์ค๋ก ์ง์ ์ ์ธ ์ ๊ทผ์ ์ฑ๋ฅ์์ ์ด์ ๋ก ๊ถ์ฅ๋์ง ์๋๋ค.\*\*
+2. LinkedList๋ ๊ฐ ์์๊ฐ ๋ค์ ์์์ ์ด์ ์์์ ๋ํ ์ฐธ์กฐ๋ง์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์ํ๋ ์์น๋ก ๋ฐ๋ก ์ ๊ทผํ๋ ค๋ฉด \*\*์ฒ์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฐพ์๊ฐ์ผ ํ๋ค. \*\*๋ฐ๋ฉด์ ArrayList๋ ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ๊ณ ์ธ๋ฑ์ค๋ก ์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
+
+## 7. ํ๊ณ
+
+> ์คํฐ๋์์ ์ข์ ์ ์ ๋ด๊ฐ ๋์น ๋ถ๋ถ ํ๋ฒ ๋ ์ ๋ฆฌ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค. ํ์ดํ
diff --git a/developLog/algorithm-datastructure/data-structure/_ Big O_.md b/developLog/algorithm-datastructure/data-structure/_ Big O_.md
new file mode 100644
index 0000000..422d26b
--- /dev/null
+++ b/developLog/algorithm-datastructure/data-structure/_ Big O_.md
@@ -0,0 +1,426 @@
+---
+cover: >-
+ https://file.notion.so/f/f/3f5af70e-5587-4c7a-8846-c7c5c0a904e2/bb5eb3c8-3a67-42a3-9f79-5b9e7ae18004/Untitled.png?table=block&id=b0e23518-b129-4308-b83b-ec65feb78ce5&spaceId=3f5af70e-5587-4c7a-8846-c7c5c0a904e2&expirationTimestamp=1723118400000&signature=rnD47Ut9ef14TJYUsQjV9D1VaLm05HlFUi3ZDGKTiYQ&downloadName=Untitled.png
+coverY: 0
+layout:
+ cover:
+ visible: true
+ size: hero
+ title:
+ visible: true
+ description:
+ visible: true
+ tableOfContents:
+ visible: true
+ outline:
+ visible: true
+ pagination:
+ visible: true
+---
+
+# Big O
+
+![](https://velog.velcdn.com/images/prettylee620/post/cbfefa92-15c0-46e9-bd52-ac40aace2420/image.png)
+
+## 1. ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ ์ด์
+
+### 1) ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋?
+
+์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์ด๋ ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ ์ํด์ ์ฐ์ฌ์ง๋ ์ธ์ด
+
+์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ดํด๊ฐ ์๋ค๋ฉด ๊ตฌํํ๊ณ ์ ํ๋ ๊ธฐ๋ฅ์ ๋ณด๋ค ์ฝ๊ณ ํจ์ธ์ ์ผ๋ก ๋ง๋ค ์ ์๊ฒ ๋์์ค
+
+ํ์
์ ๊ฒฝ์ฐ ์ฝ๋ฉํ
์คํธ๋ฅผ ๊ณต๋ถํ์ง ์์ ๋๋ถ๋ถ์ ์ธ์ด๋ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ด๋ฏธ ์ ๋ง๋ค์ด์ง ์์ด๋ค์ ๊ฐ์ ธ์์ ๋ง๋ค๊ณ ์ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์์ ์ฌ์ฉ
+
+### 2) ๊ทธ๋ ๋ค๋ฉด ์ ์ฝ๋ฉํ
์คํธ๋ฅผ ๋ณผ๊น?
+
+์๊ณ ๋ฆฌ์ฆ ์์ฑ ํ ์ง์/์๋ต์ ํตํด ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์ผ๋ง๋ ์ดํดํ๊ณ ์๊ณ ์๊ฐ๊ณผ ๊ณต๊ฐ ๋ณต์ก๋์ ๋ํ ์ดํด๊ฐ ์๋์ง ํ์ธํด๋ณด๊ธฐ ์ํจ
+
+EX.
+
+* ํํ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ด์ ๋?
+* ์ด๊ฒ์ด ์ ๊ฒ๋ค์ ๋นํด ์ฅ๋จ์ ์?
+* ์ ๊ฒ๊ณผ ์ด๊ฒ์ ์ฐจ์ด๋?
+
+## 2. ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถ๋ฐฉ๋ฒ
+
+์๋ฃ ๊ตฌ์กฐ๋ ์ด๋ ์ํฉ์ ์ฐ์ด๋ ๊ฒ์ด ์ข๊ณ ๋ ์ด๋ค ์์ API๋ค์ด ์๋์ง ์ด๋ฐ ๊ฒ๋ค ์กฐ๊ธ ํฐ ๊ทธ๋ฆผ์ ๋ณด๋ฉด์ ๊ณต๋ถ
+
+### 1) ์๋ฃ๊ตฌ์กฐ
+
+์๋น์ค๋ ์ดํ๋ฆฌ์ผ์ด์
์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ๊ตฌ์กฐ์ ์ผ๋ก ์ ์ ๋ฆฌํด์ ๋ด์๋๊ณ , ๊ด๋ฆฌํ๊ณ **ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ํ์ํ ๋ฐ์ดํฐ์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ๊ณ ํ์ํ ์์ ์ฝ์
์ญ์ ** ํ ์ ์๋๋ก ๋์์ค๋ค. ๊ธฐ๋ฅ์ ์ ํฉํ ์๋ง๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฐ๋ ๊ฒ์ด ์ค์ํ๋ค.
+
+> ๐ก ์๋ฃ ๊ตฌ์กฐ ๊ณต๋ถ์ Point
+
+1. Order : ์๋ฃ ๊ตฌ์กฐ ์์ ์๋ ๋ฐ์ดํฐ๋ค์ ์์๊ฐ ๋ณด์ฅ?
+2. Unique : ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด ๊ฐ ์ ์๋๊ฐ?
+3. Search : ๊ฒ์์ ์ผ๋ง๋ ํจ์จ์ ์ธ๊ฐ?
+4. Modification : ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ์ ์์ ์ ์ผ๋ง๋ ํจ์จ์ ์ธ์ง?
+
+## 3. BigO
+
+> ์ถ์ฒ : ๋๊ผด๋ผ์ค https://www.youtube.com/watch?v=BEVnxbxBqi8
+
+### 1) ๊ฐ์
+
+* ์๊ณ ๋ฆฌ์ฆ์ **์คํผ๋**๋ฅผ ์ด๋ป๊ฒ ํํํ๋์ง ์์๋ด
+* ๋น ๋ฅด๋ค, ๋๋ฆฌ๋ค์ ๋ง์ด ์๋ `CS์ง์`
+
+### 2) ์๊ณ ๋ฆฌ์ฆ
+
+***
+
+์ ํ๋ ๊ณต๊ฐ๊ณผ ์๊ฐ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง๋ฅผ ์ ํด๋์ ๋ก์ง
+
+์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์ ๋ ฌ ๋๋ ์ด์ ์ ๊ตฌํ๋ ๋ฑ์ ๋ค์ํ ๊ณ์ฐ์ ํ ์ ์๋ ๊ฒ์ ๋งํจ
+
+![](https://velog.velcdn.com/images/prettylee620/post/2e69337f-9686-4508-93f8-8dd558bc16e3/image.png)
+
+์ฆ, ์ฃผ์ด์ง `input`์ผ๋ก **์ ์๋ ๊ณ์ฐ์ ์ํ**ํ ๋ค์ `output` ๊ฒฐ๊ณผ๊ฐ์ ๋ด๋ ๊ฒ
+
+### 3) ์๊ฐ๋ณต์ก๋
+
+***
+
+> ๐ซ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ์
๋ ฅ์ ํจ์ ๊ด๊ณ
+
+1. โ๋น ๋ฅด๋คโ, โ๋๋ฆฌ๋คโ๋ `์๊ฐ`์ผ๋ก **ํํํ์ง ์์(์๊ฐ ๋ณต์ก๋)**
+ * ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๋ ๋ด ์ปดํจํฐ๊ฐ ์น๊ตฌ์ ์ปดํจํฐ๋ณด๋ค ๋น ๋ฅผ ์ ์์
+ * ์ปดํจํฐ๋ผ๋ **ํ๋์จ์ด**๊ฐ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ
+ * โ์๋ฃ๊น์ง ๊ฑธ๋ฆฌ๋ ์ ์ฐจ์ ์โ`STEPS`
+ * ์๊ณ ๋ฆฌ์ฆ์ ์ํด ํ์ํ ์ฐ์ฐ์ ํ์
+ * ํน์ ํฌ๊ธฐ์ ์
๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ง๋ ์ค๋ ๊ฑธ๋ฆฌ๋์ง\
+
+2. **์ ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ** ์ฌ์ด์ฆ๊ฐ **N**๊ฐ์ด๋ฉด, **N**์คํ
์ด ํ์ํจ
+
+### 4) ๊ณต๊ฐ๋ณต์ก๋
+
+***
+
+* ๊ณต๊ฐ๋ณต์ก๋ : ํน์ ํ ํฌ๊ธฐ์ ์
๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ง๋ ๋ง์ `๋ฉ๋ชจ๋ฆฌ`๋ฅผ ์ฐจ์งํ๋์ง
+* ์๊ณ ๋ฆฌ์ฆ์ ์ํด ํ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์
+* ์๋ฅผ ๋ค์ด `int a[1004];`๋ผ๋ ๋ฐฐ์ด์ด๋ฉด a ๋ฐฐ์ด์ 1004X4๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ฒ ๋จ
+
+### 5) Big O
+
+***
+
+> ๐ซ ์ฌ์ด์ฆ๊ฐ N๊ฐ๋ฉด, N์คํ
์ด ํ์ํด์!!! ๋ณด๋ค๋ ์ ํ๊ฒ์์ ์๊ฐ ๋ณต์ก๋ = O(N) ์ด๋ ๊ฒ ์ค๋ช
ํ๋ ์ปจ์
์ Big O
+
+1. Big O๋ ์๊ฐ๋ณต์ก๋๋ฅผ ํํํ๋ **ํ๊ธฐ๋ฒ**
+2. ์ธ์ ๋ฌด์์ ์ธ์ง ๋น ๋ฅด๊ฒ ํ์
๊ฐ๋ฅํ๋ฉฐ, ์์ ์ ์ฝ๋๋ฅผ ํ๊ฐ ๊ฐ๋ฅ
+ * ์..? ๋ฏธ๋์ ์ด๋ป๊ฒ ์๋ํ ์ ์๋์ง ์ ์ ์์ผ๋
+ * Big O๋ฅผ ์ดํด์, ์๊ณ ๋ฆฌ์ฆ์ **๋น ๋ฅด๊ฒ ๋ถ์** ๊ฐ๋ฅ, ์ธ์ ๋ฌด์์ ์ธ์ง ํ์
๊ฐ๋ฅ
+3. ์๊ณ ๋ฆฌ์ฆ์ ํผํฌ๋จผ์ค๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ณ `ํจ์จ์ `์ผ๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ
+
+* ์ ํ๊ฒ์์ ์๊ฐ ๋ณต์ก๋ = `O(N)`
+* but, ํญ์ Big O๊ฐ ๋ชจ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฒฝํ ์ค๋ช
ํ๋ ๊ฒ์ ์๋
+
+4. ๋ฐฐ์ด์ ์ธํ์ผ๋ก ์ฌ์ฉํ ํจ์, ์ธํ์ ํฌ๊ธฐ ์๊ด์์ด **๋์ผํ ์์ ์คํ
**์ด ํ์
+ * ์๋์ ์ฝ๋๋ print\_first๋ผ๋ ํ์ด์ฌ ํจ์๋ฅผ ์ ์ํ๋ฉฐ, ๋งค๊ฐ๋ณ์ arr์๊ฒ ๋ฐ์ผ๋ฉฐ, arr์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ถ๋ ฅํด๋
+ * `์ธ๋ฑ์ค`๋ฅผ ์ด์ฉํ์ฌ ํ ๋ฒ์ ์ฐพ์ผ๋๊น
+ * ์ด ํจ์์ ์๊ฐ๋ณต์ก๋๋ `constant time(์์ ์๊ฐ)` : **N์ ํฌ๊ธฐ ์๊ด์์ด** ๋๋ด๋๋ฐ ๋์ผํ ์ซ์์ ์คํ
์ด ํ์
+
+```python
+def print_first(arr):
+ print(arr[0])
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/c2af3677-4a8c-46b0-9e59-77d7510ad855/image.png)
+
+1. ์ด ์ฝ๋์ ๊ฒฝ์ฐ 2๋ฒ์ print๊ฐ ์๋๋ฐ 2๊ฐ์ ์คํ
์ด ํ์ํ ๊ฒ
+
+```python
+def print_first(arr):
+ print(arr[0])
+ print(arr[0])
+```
+
+๐ซ ์ด๋ ๋ค๋ฉด O\[2] ์ผ๊น? NO! ์ฌ์ ํ **O\[1]**
+
+* Big O๋ ํจ์์ ๋ํ
์ผ์ ๊ด์ฌ์ด ์๊ณ , ๋ฌํํ๊ฒ ์ด๋ป๊ฒ ์ด ํจ์๊ฐ `์ธํ์ ์ฌ์ด์ฆ`์ ๋ฐ๋ผ์ ์ด๋ป๊ฒ ์๋ํ๋์ง๊ฐ ์ค์
+* ํจ์๋ ์ธํ ์ฌ์ด์ฆ๊ฐ ์์ฒญ๋๊ฒ ์ปค์ ธ๋ ์๊ด์์ด ๋ฏธ๋ฆฌ ์ ํด์ง ์ซ์์ ๋ฐ๋ผ ์๋
+
+1. ์ฆ, Big O๋ ํฐ ์๋ฆฌ์๋ง ๊ด์ฌ์ ๊ฐ์ง
+2. ๊ผญ ๊ธฐ์ตํด ๋ฌ์ผ ํ ๊ฒ์ ๋น
์ค๋ `์์`๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์์
+
+### 6) Constant Time Algorithm(์์ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ)
+
+***
+
+* constant time `(์ผ์ ํ ์๊ฐ/์์)`
+* ์ธํ์ฌ์ด์ฆ์ ๊ด๊ณ์์ด ์คํ
์ด ์ ํด์ง ์๊ณ ๋ฆฌ์ฆ๋ค
+* ํญ์ ์ ํธํ๋ ๊ฒ โ ์ธํ์ด ๋์ด๋๋ **๋ณํ์ง ์์**
+* ํ์ค์ ์ผ๋ก **ํญ์** ๋ง๋ค๊ธฐ ํ๋ค๋ค
+
+![](https://velog.velcdn.com/images/prettylee620/post/0a202750-4308-4eca-b0a5-08647c382c6b/image.png)
+
+#### O(n) ์๋ฐ ์ฝ๋๋ก ๋ํ๋ด๋ฉด
+
+```java
+// ์๊ฐ ๋ณต์ก๋ O(n)์ด ๊ณ์ฐ๋๋ค. O(1)
+public class OneToSum {
+
+ public int sum(int n){
+ int sum = 0;
+
+ return n * (n + 1) / 2;
+ }
+
+
+ public static void main(String[] args) {
+ int n = 5;
+ // static์ผ๋ก ์ฃผ์ง ์์ ๋
+ OneToSum object = new OneToSum();
+ System.out.println(object.sum(10));
+ }
+}
+```
+
+### 7) ์๊ฐ๋ณต์ก๋ 1: Big O์ ์๊ฐ๋ณต์ก๋, ์ ํ ์๊ฐ ๋ณต์ก๋
+
+***
+
+๋ฐฐ์ด์ ์ฌ์ด์ฆ๊ฐ 10์ด๋ผ๋ฉด, 10๋ฒ ํ๋ฆฐํธ ํ๋ ํจ์ : **O(N)**
+
+```python
+def print_all(arr):
+ for n in arr:
+ print(n)
+```
+
+Q: ๋ง์ฝ ๋ฐ๋ณต๋ฌธ์ ๋๋ฒ์ด๋ผ๋ฉด O(2N)์ผ๊น? \*\*\*\*
+
+```python
+def print_all(arr):
+ for n in arr:
+ print(n)
+ for n in arr:
+ print(n)
+```
+
+A: **2๋ ์์**์ด๊ธฐ์ **๋ฒ๋ ค๋๊ณ **, ์ฌ์ ํ `O(N)`์ผ๋ก ํํ, ํต์ฌ์ ๋ณํ์ง ์์์ง ๋๋ฌธ
+
+๋ฉ์ธ์ง๊ฐ ๊ฐ๋ค โ `์ธํ์ด ์ฆ๊ฐ`ํ๋ฉด `์คํ
๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ`
+
+#### O(N)์ด๋ ์ ํ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ทธ๋ํ
+
+![](https://velog.velcdn.com/images/prettylee620/post/ef219a14-8b13-4409-ae85-56d2855b5cf9/image.png)
+
+### 8) ์๊ฐ๋ณต์ก๋ 2 : Quadratic Time(2์ฐจ ์๊ฐ)
+
+***
+
+* `Nested Loops(์ค์ฒฉ ๋ฐ๋ณต)`์ด ์์ ๋, ๋ฐ์
+* ์๋์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๊ฐ ์์ดํ
์ ๋ํด ๋ฃจํ๋ฅผ ๋ฐ๋ณต, ์คํ
+
+```python
+def print_twice(arr)
+ for n in arr:
+ for x in arr:
+ print(x, n)
+```
+
+* ์๊ฐ๋ณต์ก๋ : **์ธํ $n^2$**
+
+ EX. ์ธํ์ด 10๊ฐ์ 100๋ฒ์ ์คํ
: **๋ฃจํ ์์ ๋ฃจํ**์์ ํจ์๋ฅผ ์คํ์ํค๊ธฐ ๋๋ฌธ
+
+#### 2์ฐจ ์๊ฐ๋ณต์ก๋ ๊ทธ๋ํ๋ฅผ ์ ํ ์๊ฐ๋ณต์ก๋์ ๋น๊ต ๊ทธ๋ํ
+
+![](https://velog.velcdn.com/images/prettylee620/post/b01548a2-0d8d-4a8d-ba5d-9026aa5ba5a0/image.png)
+
+**์ ํ ์๊ฐ๋ณต์ก๋**๊ฐ 2์ฐจ ์๊ฐ๋ณต์ก๋๋ณด๋ค ๋ **ํจ์จ์ **
+
+### 9) ์๊ฐ๋ณต์ก๋ 3 : ๋ก๊ทธ ์๊ฐ(Logarithmic Time)
+
+***
+
+1. ์ด์ง๊ฒ์ ์๊ณ ๋ฆฌ์ฆ ์ค๋ช
์ ์ฌ์ฉ โ ์ผ๋ง๋ `๋น ๋ฅธ์ง` ์ค๋ช
๊ฐ๋ฅ
+ 1. ์ด์ง ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ธํ ์ฌ์ด์ฆ๊ฐ 2๋ฐฐ๊ฐ ๋์ด๋ ํ์ํ step์ ์๋ 1๊ฐ๋ฐ์ ์๋ค์ด๋จ
+ 2. ์๋? ์ด์ง๊ฒ์์ ๊ฐ ํ๋ก์ธ์ค์ ์คํ
์ ์ ๋ฐ์ผ๋ก ๋๋ ์ ํ๊ธฐ ๋๋ฌธ์ด
+2. ํํ๋ฒ : `O(log N)`
+3. ์ ๋ ฌ๋ ๋ฐฐ์ด์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
+4. exponent(์ง์) โ logarithm(๋ก๊ทธ)
+
+* n = $log\_232$ n์ 32๋ฅผ 2๋ก ๋ช๋ฒ์ ๋๋ ์ผ 1์ด ๋์ฌ๊น?
+
+> ๐ซ 32 / 2 = 16 โ 1 16 / 2 = 8 โ 2 8 / 2 = 4 โ 3 4 / 2 = 2 โ 4 2 / 2 = 1 โ 5 times
+
+* n์ 5
+
+ โ ์ด์ง ๊ฒ์๊ณผ ๊ฐ์ ์ธํ์ ๋ฐ์ผ๋ก ๋๋๊ณ ์์ํ๋ ๊ฒ์ฒ๋ผ
+
+ โ Big O์ ํน์ฑ์ n = $log32$ ์๋์ 2๊ฐ ์ฌ๋ผ์ง
+
+ โ So, `log N`์ด ๋๋ ๊ฒ
+* ๋ก๊ทธ ์๊ฐ๋ณต์ก๋์ **๊ทธ๋ํ**
+
+![](https://velog.velcdn.com/images/prettylee620/post/a41f1623-b1e9-46b2-a071-72a38c32956d/image.png)
+
+**์ ํ์๊ฐ**๋ณด๋ค๋ `๋น ๋ฅด๊ณ `, **์์ ์๊ฐ**๋ณด๋ค๋ `๋๋ฆผ`
+
+### 10) **O(1) & O(N) & O(logN) ๊ทธ๋ํ**
+
+***
+
+**O(1) > O(logN) > O(N) ์์ผ๋ก ๊ฐ์ฅ ํจ์จ์ ์ด๋ค.**
+
+O(logN)์ ์์ฃผ ์กฐ๊ธ์ฉ ์ฆ๊ฐํ๋ ๊ณก์ ์ ๊ทธ๋ฆฌ๊ณ ์๋๋ฐ O(1)๋ณด๋ค๋ ๋ ํจ์จ์ ์ด์ง๋ง O(N)๋ณด๋ค๋ ํจ์ฌ ํจ์จ์ ์ด๋ค.
+
+์ฌ์ง ์ถ์ฒ : https://velog.io/@welloff\_jj/Complexity-and-Big-O-notation
+
+![](https://velog.velcdn.com/images/prettylee620/post/8a5efee5-46db-43cb-b974-7f1c9006b473/image.png)
+
+### 11) ๊ทธ๋ ๋ค๋ฉด ์ฐ์ต๋ฌธ์
+
+***
+
+์ถ์ฒ : https://velog.io/@on-n-on-turtle/๋๊ตฌ๋-์๋ฃ๊ตฌ์กฐ์-์๊ณ ๋ฆฌ์ฆ-๋น
์คํ๊ธฐ๋ฒ
+
+#### ๐ ๋ฆฌ์คํธ ๋ด ๋ชจ๋ ํญ๋ชฉ์ ์ถ๋ ฅํจ
+
+```jsx
+public static void printThings() {
+ String[] things = {"apples", "chairs", "files", "notes"};
+
+ for (String thing : things)
+ System.out.printf("Here's a thing : %s \n", thing);
+}
+```
+
+์ด ์๊ณ ๋ฆฌ์ฆ์ `for`๋ฃจํ์์ ๋ฐฐ์ด์ ์์๊ฐ 4๊ฐ์ด๊ธฐ ๋๋ฌธ์ 4๋จ๊ณ๊ฐ ๊ฑธ๋ฆฐ๋ค.
+
+๋ง์ฝ ๋ฐฐ์ด์ ์์๊ฐ 10๊ฐ์ด๋ฉด 10๋จ๊ณ๊ฐ ๊ฑธ๋ฆด ๊ฒ์ด๋ค.
+
+**`for`๋ฃจํ์ ๋์
๋๋ ๋ฐฐ์ด์ ์์ ๊ฐฏ์๋งํผ ๋จ๊ณ๊ฐ ๊ฑธ๋ฆฌ๋ฏ๋ก ์ด ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ O(N)์ด๋ค.**
+
+#### ๐ **์ฃผ์ด์ง ํด๊ฐ ์ค๋
์ธ์ง ์์๋ด**
+
+```jsx
+public static boolean isLeapYear(int year) {
+ return (year % 100 == 0) ? (year % 400 == 0) : (year % 4 == 0);
+}
+```
+
+**`N`์ `number`์ด๋ค.**
+
+**ํจ์๋ก ์ ๋ฌ๋ ์์ ์๊ด์์ด ๋จ๊ณ ์๊ฐ ์ผ์ ํ๋ฏ๋ก O(1)์๊ณ ๋ฆฌ์ฆ์ด๋ค.**
+
+### 12) ์คํฐ๋์์ ์ป์ ์์ฃผ ์ฐ์ด๋ ์๋ฃ๊ตฌ์กฐ์ ์๊ฐ๋ณต์ก๋ ์ ๋ฆฌ
+
+> 8์ 23์ผ ๊ตญ๋น ๊ฐ์ ๋ค์ผ๋ฉด์ ์ ๋ฒ์ฃผ์ ์งํํ ์คํฐ๋์์ ๋ค๋ฅธ ๋ถ์ด ์ ๋ฆฌ ํ ์ถ๊ฐ ๋ด์ฉ
+
+#### **1๏ธโฃ ๋ฐฐ์ด**
+
+1. ์ฝ์
/์ญ์ : O(N)
+2. ํ์: O(1)
+
+> ๐ ํ์ด์ฌ์์๋ ๋จ์ํ **List๋ก ๊ตฌํ**ํ๋ค. ๐ **ํ์ํ ๋ ์ฌ์ฉํ๊ธฐ ์ข์ ์๋ฃ๊ตฌ์กฐ**(์ฝ์
์ด๋ ์ญ์ ๋ ํ์๋ฆฌ์ฉ ๋ค๋ก ์ฎ๊ธฐ๊ฑฐ๋ ํ๋ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์๊ธฐ ๋๋ฌธ์, ์๊ฐ๋ณต์ก๋๊ฐ O(N)์ด๋๋ค.)
+
+#### **2๏ธโฃ ๋ฒกํฐ (= ๋์ ๋ฐฐ์ด)**
+
+์ฝ์
/์ญ์ : O(N)
+
+ํ์: O(1)
+
+> ๐ ํ์ด์ฌ์์๋ ๋จ์ํ **List๋ก ๊ตฌํ**ํ๋ค. C++ ๊ฐ์ ์ธ์ด์์๋ ๋ฐฐ์ด๊ณผ ๋ฒกํฐ๋ ๋ค๋ฅด๋ค. ํ์ง๋ง ํ์ด์ฌ์์๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ List๋ก ์ฐ๋ฉด ๋๋ค. List ์์ฒด๊ฐ ์ด๋ฏธ **๋์ ๋ฐฐ์ด์ ์ง์ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.**
+
+#### **3๏ธโฃ ์ฐ๊ฒฐ๋ฆฌ์คํธ**
+
+1. ์ฝ์
/์ญ์ : O(1)
+2. ํ์: O(N)
+
+![](https://velog.velcdn.com/images/prettylee620/post/d1b14dd7-77fb-4682-8a2a-088c7197e469/image.png)
+
+3. ๋งํฌ๋ ๋ฆฌ์คํธ
+
+> ๐ ์๊ฐ๋ณต์ก๋ ์ธก๋ฉด์์ ๋ฐฐ์ด(List)์ ๋ฐ๋ ๋๋ค. (ํ์์ ํ๋ ค๋ฉด ์๊ฐ์ ์ผ๋ก ํฌ์ธํฐ ๋ถ๋ถ์ ์ฐ๊ณ ์ฐ๊ณ ๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์์ด O(N)์ด ๋๊ณ , **์ฐ๊ฒฐ ์์ฒด์ ์๋ค๋ก ์์ ๋ง ํ๋ฉด ๋๋ฏ๋ก ์ฝ์
/์ญ์ ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(1)์ด ๋๋ค.**
+
+๐ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ๋ฐฑ์ค ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ๋ง ์ฌ์ฉํ ์ผ์ด ๋ง์ง๋ ์์ง๋ง, ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ ๊ตฌํ์๋ ๋ง์ด ์ฐ์ด๋ ์ด๋ก ์ ์์๋ ํ์๊ฐ ์๋ค.
+
+**(๋ฉด์ ์ง๋ฌธ์ผ๋ก๋ ๋์ฌ ์ ์๊ฒ ๋ค! ex) "์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์ ์ฝ์
/์ญ์ ๊ฐ ๋น๋ฒํ๋ฐ ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ธํ
๊ฐ??")**
+
+#### **4๏ธโฃ ์คํ LIFO**
+
+1. ์ฝ์
/์ญ์ : O(1)
+
+> ๐ Last In First Out ๐ ํ์ด์ฌ์์ ๊ตฌํ์ List๋ก ํ๋ค.
+
+```python
+s = [1,2,3,4,5,6]
+
+while(len(s)>0):
+ print(s[-1])
+ s.pop(-1)
+```
+
+์์ ์ฝ๋ ์ฒ๋ผ ๊ตฌํ ๋๋ฉด ๋๋๋ฐ, ๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฑฐ๋ฅผ ๊บผ๋ด๋ ๊ฑฐ๋ค.
+
+#### **5๏ธโฃ ํ LILO**
+
+1. ์ฝ์
/์ญ์ : O(1)
+
+> ๐ ์ค์๊ธฐ Last in Last Out ๐ from collections import deque ๋ก ์ํฌํธํ์ฌ ๋ฐํ๋ฅผ ์ฌ์ฉํ๋ค.
+
+```python
+from collectionsimport deque
+
+q = deque()
+q.append(1)
+q.append(2)
+q.append(3)
+
+while(len(q) >0):
+ print(q.popleft())
+
+```
+
+์ ์ฝ๋์์ ๋ณด๋ฉด popleft() ๋ผ๋ ํจ์๋ฅผ ํตํด ์ฒ์์ ์๋ ๊ฐ์ ๋นผ๋๋ฐ, ๋ฐํ๋ popright()๋ผ๋ ํจ์๋ ์ง์ํ๋ค.
+
+๐ ๋ํ **ํ์ด์ฌ์๋ Queue๋ ์๊ณ Deque๋ ์๋๋ฐ Queue๋ ๋ฉํฐ ์ค๋ ๋ฉ๋ ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฌ์ Deque๋ณด๋ค ๋๋ฆฌ๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํธ๋ ์
์ฅ์ด๋ฏ๋ก Deque๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.**
+
+#### **6๏ธโฃ ์ฐ์ ์์ํ(๋ด๋ถ๊ฐ Heap์ผ๋ก ๊ตฌ์ฑ)**
+
+1. ์ฝ์
/์ญ์ : O(logN)
+
+```python
+import heapq
+
+# ๋ฆฌ์คํธ๋ฅผ ํ๋ ๋ง๋ค๊ณ ์ฌ์ฉํ๋ค.
+pq = []
+heapq.heappush(pq,3)
+heapq.heappush(pq,1)
+heapq.heappush(pq,2)
+
+while(len(pq) >0):
+ print(heapq.heappop(pq))
+```
+
+๐ **ํ์ด์ฌ์ MinHeap** ์ด๋ค.(์ด์งํธ๋ฆฌ์ ์ต์์๋ ํญ์ ์ต์๊ฐ์ธ)
+
+๐ **์ฐ์ ์์ ํ ๊ฐ์ ๊ฒฝ์ฐ์๋ , ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ฌ๋ฌ ๊ฐ๋ค์ ๋ฃ๊ณ ๋บ๋๋ง๋ค ์ ค ์์ ๊ฐ์ด๋ ์ ค ํฐ ๊ฐ์ ์์์ผ ํ ๋ ์จ์ผ ํ๋ค.** Sort() ๊ฐ์ ๊ฒฝ์ฐ ์ ์ฒด ๋ฆฌ์คํธ ์์ฒด๋ฅผ ์ ๋ ฌํด์ค๋ค๋ ์ ์์ ํฐ ์ฐจ์ด์ ์ ๊ฐ์ง๋ค.
+
+#### **7๏ธโฃ Map(๋์
๋๋ฆฌ)**
+
+1. ์ฝ์
/์ญ์ : O(1)
+
+๐ **ํ์ด์ฌ์ ๋์
๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.**
+
+์ถ๊ฐ๋ก, c++๊ฐ์ ๊ฒฝ์ฐ๋ O(logN)์ด ๋๋๋ฐ ์ด๋ c++์ ๋งต์ ์์ ๋ค์ฌ๋ค ๋ณด๋ฉด ์ด์ง ๊ทธ๋ํ๋ก ๊ตฌํ์ด ๋์ด์๊ธฐ ๋๋ฌธ์ด๊ณ , python์ ๋์
๋๋ฆฌ์ ๊ฒฝ์ฐ๋ ํด์๋ก ๊ตฌํ์ด ๋์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
+
+#### **8๏ธโฃ ์งํฉ(set)**
+
+์ฝ์
/์ญ์ : O(logN)
+
+๐**์ค๋ณต์ ์ ๊ฑฐ**ํ๋๊ฒ ํฐ ํน์ง!
+
+### 13) ๋น
์ค์ ์คํ ์๊ฐ์ด ์งง์ ๊ฒ๋ถํฐ ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒ๊น์ง ๋์ด
+
+1. `O(1)` - ์์ ์๊ฐ(Constant Time): ์
๋ ฅ ํฌ๊ธฐ์ ์๊ด์์ด ํญ์ ์ผ์ ํ ์๊ฐ์ด ์์
+2. `O(log n)` - ๋ก๊ทธ ์๊ฐ(Logarithmic Time): ์
๋ ฅ์ ํฌ๊ธฐ์ ๋ํด ๋ก๊ทธ์ ํํ๋ก ์ฆ๊ฐํ๋ ์๊ฐ์ด ์์
+3. `O(n)` - ์ ํ ์๊ฐ(Linear Time): ์
๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์๊ฐ์ด ์ ํ์ผ๋ก ์ฆ๊ฐ
+4. `O(n log n)` - ์ ํ ๋ก๊ทธ ์๊ฐ(Linearithmic Time): n๊ณผ log n์ ๊ณฑ๋งํผ ์๊ฐ์ด ์ฆ๊ฐ
+5. `O(n^2)` - ์ด์ฐจ ์๊ฐ(Quadratic Time): ์
๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์๊ฐ์ด ์ฆ๊ฐ
+6. `O(n^k)` - ๋คํญ ์๊ฐ(Polynomial Time): ์
๋ ฅ ํฌ๊ธฐ์ k ์ ๊ณฑ์ ๋น๋กํ๋ ์๊ฐ์ด ์์(k๋ ์์).
+7. `O(2^n)` - ์ง์ ์๊ฐ(Exponential Time): ์
๋ ฅ ํฌ๊ธฐ์ ๋ํด ์ง์์ ์ผ๋ก ์๊ฐ์ด ์ฆ๊ฐ
+8. `O(n!)` - ํฉํ ๋ฆฌ์ผ ์๊ฐ(Factorial Time): ์
๋ ฅ ํฌ๊ธฐ์ ํฉํ ๋ฆฌ์ผ์ ๋น๋กํ๋ ์๊ฐ์ด ์์
diff --git "a/developLog/algorithm-datastructure/data-structure/_ BigInteger\354\227\220 \353\214\200\355\225\234 \354\240\225\353\246\254_.md" "b/developLog/algorithm-datastructure/data-structure/_ BigInteger\354\227\220 \353\214\200\355\225\234 \354\240\225\353\246\254_.md"
new file mode 100644
index 0000000..10fe88f
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ BigInteger\354\227\220 \353\214\200\355\225\234 \354\240\225\353\246\254_.md"
@@ -0,0 +1,210 @@
+---
+description: BigInteger์ ๋ํ ์ ๋ฆฌ ๊ธ
+---
+
+# BigInteger์ ๋ํ ์ ๋ฆฌ
+
+## 1. BigInteger๋?
+
+> `BigInteger`๋ ์๋ฐ์์ ์ ๊ณตํ๋ ํด๋์ค๋ก, ์์ ์ ๋ฐ๋ ์ ์(arbitrary-precision integers)๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ค.
+
+์ ์๋ฅผ ํํํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์๋ฃํ(int, long ๋ฑ)์ ํฌ๊ธฐ์ ์ ํ์ด ์๋ค. ์๋ฅผ ๋ค์ด, int๋ 32๋นํธ์ด๋ฏ๋ก ์ต๋๊ฐ์ 2์ 31์น - 1์ด ๋ฉ๋๋ค. ํ์ง๋ง BigInteger๋ ์ด๋ฌํ ์ ํ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋งค์ฐ ํฐ ์ ์ ๊ฐ๋ ํํํ ์ ์์!!
+
+### 1) ์ฅ์
+
+BigInteger ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ์ฌ ์ ์ ์ฐ์ฐ์ ์ํํ ์ ์๋ค
+
+* ๋ํ๊ธฐ, ๋นผ๊ธฐ, ๊ณฑํ๊ธฐ
+* ๋๋๊ธฐ, ๋๋จธ์ง ์ฐ์ฐ
+* ๊ฑฐ๋ญ์ ๊ณฑ
+* ๋นํธ ์ฐ์ฐ
+* ๋น๊ต
+
+์๋ฅผ ๋ค์ด, ์์ฃผ ํฐ ๋ ์ ์๋ฅผ ๋ํ๊ณ ์ถ์ ๋, int๋ long์ผ๋ก๋ ๋ฒ์๋ฅผ ์ด๊ณผํ์ฌ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์์ง๋ง, BigInteger๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
+
+> ์ฆ, ์ฐ์ฐ ๋ฉ์๋๊ฐ ๋ด์ฅ๋์ด ์๋ค๊ณ ๋ณผ ์ ์์
+
+### 2) ๋ด์ฅ๋ ๋ฉ์๋ ์ ๋ฆฌ
+
+> [์ฐธ๊ณ ๋ฌธ์](https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html)
+
+1. **add(BigInteger val)**: ํ์ฌ BigInteger์ ์ธ์๋ก ์ ๋ฌ๋ BigInteger๋ฅผ ๋ํ๋ค.
+2. **subtract(BigInteger val)**: ํ์ฌ BigInteger์์ ์ธ์๋ก ์ ๋ฌ๋ BigInteger๋ฅผ ๋บ๋ค.
+3. **multiply(BigInteger val)**: ํ์ฌ BigInteger์ ์ธ์๋ก ์ ๋ฌ๋ BigInteger๋ฅผ ๊ณฑํ๋ค.
+4. **divide(BigInteger val)**: ํ์ฌ BigInteger๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ BigInteger๋ก ๋๋๋ค. ๋ชซ์ ๋ฐํ
+5. **remainder(BigInteger val)**: ํ์ฌ BigInteger๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ BigInteger๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ฐํ
+6. **pow(int exponent)**: ํ์ฌ BigInteger๋ฅผ ์ง์๋ก ์ ๊ณฑ
+7. **abs()**: ํ์ฌ BigInteger์ ์ ๋๊ฐ์ ๋ฐํ
+8. **negate()**: ํ์ฌ BigInteger์ ๋ถํธ๋ฅผ ๋ฐ๊พผ๋ค.
+9. **compareTo(BigInteger val)**: ํ์ฌ BigInteger๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ BigInteger์ ๋น๊ตํฉ๋๋ค. ๊ฐ์ด ๊ฐ์ผ๋ฉด 0, ํ์ฌ BigInteger๊ฐ ํฌ๋ฉด ์์, ์์ผ๋ฉด ์์๋ฅผ ๋ฐํํฉ๋๋ค.
+10. **equals(Object x)**: ํ์ฌ BigInteger์ ์ง์ ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ์ฌ ๊ฐ์ผ๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.
+11. **toString()**: BigInteger๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
+
+## ๐ค ์? ์ฐพ์๋ดค๋๋ฐ?
+
+### 1) ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ๋ค๊ฐ
+
+> [์์ฒญ๋ ๋ถ์2](https://www.acmicpc.net/problem/1271)
+
+![](https://velog.velcdn.com/images/prettylee620/post/bbf184a6-b64e-4960-af65-6f1f55f95263/image.png)
+
+์ฌ๊ธฐ์ ๊ฐ์ฅ ํต์ฌ์ ![](https://velog.velcdn.com/images/prettylee620/post/1fce6176-b174-4d35-bba0-ac9cbf39aba7/image.png)
+
+์ด๊ฑฐ์!!
+
+๊ทผ๋ฐ ๋๋ ํ์ด ๊ณผ์ ์์ ๋ค๋ฅธ ๊ฑธ ๋ฌธ์ ์ผ๊ณ ์์๋ค.
+
+### 2) ํด๊ฒฐ๊ณผ์
+
+#### 1.InputMismatch ๋ฐํ์์๋ฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/1a9abcba-45e0-498f-b82a-854f8c2a1195/image.png)
+
+์ด ๋ฐํ์์๋ฌ๋ InputMismatchException์ **์
๋ ฅ ๋ฐ์ดํฐ๊ฐ ์์ํ ํ์๊ณผ ์ผ์นํ์ง ์์ ๋ ๋ฐ์ํ๋ ๋ฐํ์ ์์ธ**๋ก, ์ด ์์ธ๋ ์ฃผ๋ก Scanner ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ ฅ์ ํ์ฑํ ๋ ๋ฐ์ํ๋ค.
+
+```java
+import java.util.Scanner;
+
+public class Main {
+ public static void main(String[] args) {
+
+ int m = 0;
+ int n = 0;
+
+ try {
+ Scanner in = new Scanner(System.in);
+
+ m = in.nextInt();
+ n = in.nextInt();
+
+ int result = m / n;
+ int remainder = m % n;
+
+ System.out.println(result);
+ System.out.println(remainder);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+> ์ฌ๊ธฐ์ ์... int์ ๋ฌธ์ ์ธ๊ฐ ์ถ์ด์ long์ผ๋ก ๋ฐ๊ฟจ์
+
+```java
+import java.util.Scanner;
+
+public class Main {
+ public static void main(String[] args) {
+
+ long m = 0;
+ long n = 0;
+
+ Scanner in = new Scanner(System.in);
+
+ m = in.nextLong();
+ n = in.nextLong();
+
+ long result = m / n;
+ long remainder = m % n;
+
+ System.out.println(result);
+ System.out.println(remainder);
+
+
+ }
+}
+```
+
+๊ทธ๋ฌ๋.. ๋๊ฐ์๊ณ ... ์ฐพ์๋ณด๋ ์ผ๋ฐ ํ์
์ผ๋ก๋ ์๋์๋ ๊ฒ... BigInteger์ด ํ์ํ๋ค.
+
+#### 2. NoSuchElement ๋ฐํ์์๋ฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/176c2c3e-7553-463b-bc43-985d898bdd6c/image.png)
+
+NoSuchElement ๋ฐํ์์๋ฌ๋ Scanner ๊ฐ์ฒด์์ nextLine() ๋ฉ์๋๋ฅผ ํธ์ถํ์ ๋ ์
๋ ฅ ์คํธ๋ฆผ์์ ์ฝ์ ์์๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ ์ ์๋ ์์ธ๋ก, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์
๋ ฅ์ด ๋๋ ํ์ ๋ ๋ค์ ์
๋ ฅ์ ์๊ตฌํ ๋ ๋ฐ์ํ ์ ์๋ค.
+
+์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ํฐํค๋ฅผ ๋๋ฅด๊ฑฐ๋ ์
๋ ฅ์ ๋ง์น๊ณ ์ํฐํค๋ฅผ ์
๋ ฅํ์ง ์์ ๊ฒฝ์ฐ์ ๋ฐ์ํ ์ ์์!!
+
+```java
+import java.util.Scanner;
+import java.math.BigInteger;
+
+public class Main {
+ public static void main(String[] args) {
+
+ String m;
+ String n;
+
+ Scanner in = new Scanner(System.in);
+
+ BigInteger number1;
+ BigInteger number2;
+
+ try{
+ m = in.nextLine();
+ n = in.nextLine();
+
+ number1 = new BigInteger(m);
+ number2 = new BigInteger(n);
+
+ BigInteger result = number1.divide(number2);
+ BigInteger remainder = number1.remainder(number2);
+
+ System.out.println(result);
+ System.out.println(remainder);
+ }
+ catch (NumberFormatException e) {
+ System.out.println("์ฌ๋ฐ๋ฅธ ์ซ์ ํ์์ด ์๋๋๋ค.");
+ }
+
+ }
+}
+```
+
+์ฆ, `nextLine`์ผ๋ก ๋ฐ์์ ๊ทธ๋ผ
+
+### 3) ์ต์ข
์ฝ๋
+
+```java
+import java.util.Scanner;
+import java.math.BigInteger;
+
+public class Main {
+ public static void main(String[] args) {
+
+ String m;
+ String n;
+
+ Scanner in = new Scanner(System.in);
+
+ BigInteger number1;
+ BigInteger number2;
+
+ try{
+ m = in.next();
+ n = in.next();
+
+ number1 = new BigInteger(m);
+ number2 = new BigInteger(n);
+
+ BigInteger result = number1.divide(number2);
+ BigInteger remainder = number1.remainder(number2);
+
+ System.out.println(result);
+ System.out.println(remainder);
+ }
+ catch (NumberFormatException e) {
+ System.out.println("์ฌ๋ฐ๋ฅธ ์ซ์ ํ์์ด ์๋๋๋ค.");
+ }
+ catch (ArithmeticException e) {
+ System.out.println("0์ผ๋ก ๋๋ ์ ์์ต๋๋ค.");
+ }
+
+ }
+}
+```
+
+## ์๊ฐ
+
+ํญ์ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ ๋ฏธ๋ค๋๋ฐ.. ํ์ด์ฌ์ผ๋ก ํ๊ธฐ ์ ์ ํ์ฌ์์ ์๋ฐ์ฐ๋๊น ์๋ฐ๋ก ๊ณต๋ถํด๋ด์ผ์ง
diff --git "a/developLog/algorithm-datastructure/data-structure/_ \353\260\260\354\227\264_array__.md" "b/developLog/algorithm-datastructure/data-structure/_ \353\260\260\354\227\264_array__.md"
new file mode 100644
index 0000000..e0a31ea
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ \353\260\260\354\227\264_array__.md"
@@ -0,0 +1,95 @@
+# ๋ฐฐ์ด(array)
+
+> ์ถ์ฒ : https://www.youtube.com/watch?v=NFETSCJON2M\&list=PL7jH19IHhOLMdHvl3KBfFI70r9P0lkJwL\&index=3
+
+## 1. ์๊ฐ๋ณต์ก๋๋?
+
+***
+
+* ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์คํผ๋ ์ด์
ํน์ ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ง๋ ๋๋ฆฌ๊ณ ๋น ๋ฅธ์ง ์ธก์ ํ๋ ๊ฒ
+* `์ค์ ์๊ฐ`์ ์ธก์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ผ๋ง๋ `๋ง์ ๋จ๊ณ[steps]`๊ฐ ์๋๊ฐ๋ก ์ธก์
+* ๋จ๊ณ๊ฐ ์ ์์๋ก ์ข์ ๊ฒ
+* 5 step > 20 step
+
+## 2. ๋ฉ๋ชจ๋ฆฌ ๊ด์ ์์ ๋ฐฐ์ด์ด ์ด๋ป๊ฒ ๋ณด์ผ๊น?
+
+***
+
+### **โจ** ๋ฉ๋ชจ๋ฆฌ์ ์ข
๋ฅ
+
+1. **volatile(ํ๋ฐ์ฑ) ๋ฉ๋ชจ๋ฆฌ** : RAM, ์ปดํจํฐ๋ฅผ ๊ป๋ค ํค๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง
+
+* ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ๊ณ , `๋ณ์๋ฅผ ์์ฑ` ํ ๋, RAM์ ์ ์ฅ
+* **RAM**(Random Access Memory) : ํ๋ ๋๋ผ์ด๋ธ๋ณด๋ค ๋ฐ์ดํฐ ์ฝ๋ ๊ฒ์ด ๋น ๋ฅด๋ฉฐ, ๋ฐ์ดํฐ ์ ์์ ๋๋ค์ผ๋ก ๊ฐ๋ฅ
+
+| 001 | 002 | 003 |
+| --- | --- | --- |
+| 004 | 005 | 006 |
+| 007 | 008 | 009 |
+| 010 | 011 | 012 |
+
+
+
+* ์์ ๊ฐ์ด RAM์ด `๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋ฐ์ค`๋ผ๊ณ ์๊ฐํด๋ณด๋ฉด ํ๋ก๊ทธ๋จ์ด **RAM์๊ฒ 006์ผ๋ก ๊ฐ์ฃผ์ธ์ ํ๋ฉด ๋๋คํ๊ฒ ์ ์ ๊ฐ๋ฅ**ํ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ด ๋น ๋ฅธ ๊ฒ, ๋ฐ๋ก ์ด๋ ๊ฐ๋ฅ(์์ฐจ์ ์ผ๋ก ๊ฐ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ)\
+
+
+2. **non-volatile(๋นํ๋ฐ์ฑ) ๋ฉ๋ชจ๋ฆฌ**
+
+* ํ๋ ๋๋ผ์ด๋ธ ๊ฐ์ ๊ฒ, ์ปดํจํฐ๋ฅผ ๊ป๋ค ํค๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง์ง ์์
+* ์ฆ, ๋ฉ๋ชจ๋ฆฌ ๊ด์ ์์ ๋ฐฐ์ด์ ๋ง๋ค๋, ์ปดํจํฐ์๊ฒ **์ด๊ฒ ์ผ๋ง๋ ๊ธด์ง** ์ค๋ช
ํด์ผ ํจ
+* ๋์ ๋ฐฐ์ด์ 4๊ฐ ๋งํผ ๊ธธ์ด ๋ฏธ๋ฆฌ **์์ฝ/ํ ๋น**ํด์ค! ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ฐ์ค๋ค์ด ๋๋ํ ์์นํ ์ ์๊ฒ
+* ๋ฐฐ์ด์ ๊ฒ์, ์ถ๊ฐ,์ญ์ ์ ๋๋ ค์ง
+
+## 3. ๋ฐฐ์ด
+
+***
+
+### **โจ** Reading : O(1)
+
+**๋ฉ๋ชจ๋ฆฌ ์ฃผ์** 001 002 003 004
+
+**index** 0 1 2 3
+
+* **์์น**๋ง ์๋ฉด, ๋ฐฐ์ด์ ๋ฐ์ดํฐ์ ์ ์ ๊ฐ๋ฅ
+
+ โ **๋ฐฐ์ด์์ ์ฝ์ด๋ด๋ ๊ฒ์ด ๋น ๋ฆ**, ์ปดํจํฐ๋ ๋ฐฐ์ด์ด ์ด๋์ ์์๋๋ ์ง ์๋๊น
+* EX. ํผ์๋ฅผ ์ํ๋ฉด ์ปดํจํฐ์๊ฒ ์ธ๋ฑ์ค 1๋ฒ์ ๊ฐ์ ๋ฌ๋ผ๊ณ ํ๋ฉด ๋จ
+* ๋ง์ ์๋ฃ๋ฅผ ์ฝ์ด๋ด๋ ค๋ฉด ๋ฐฐ์ด์ด Good, ๋ฐฐ์ด์ ์์์ ๊ฐ์ ์๊ด์์ด `Random` ํ๊ฒ ์ฝ์ด๋ด๋๊น
+* ๋ฐฐ์ด์์ ์์์ ์ ๊ทผํ๊ฑฐ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์์
์ **ํญ์ ์
๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ ์์ด ์ผ์ ํ ์๊ฐ ๋ด์ ์คํ**
+* ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์ ๊ทผํ๊ฑฐ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์์
์ ํญ์ ๊ณ ์ ๋ ์๊ฐ๋งํผ ๊ฑธ๋ฆฐ๋ค.
+* ์ด๋ ์
๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ๋์ผํ๊ฒ ๋น ๋ฅด๊ฒ ์คํ๋๋ฉฐ, ์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ๋ฐฐ์ด์ Big O ํ๊ธฐ๋ฒ์ \*\*`O(1)`\*\*๋ก ํํ
+
+### **โจ** Searching : O(n)
+
+* ํด๋น ๊ฐ(=ex. ํผ์)๊ฐ **๋ฐฐ์ด์ ์๋์ง, ์๋์ง ๋ชจ๋ฆ**
+* ์ด๋์ ์๋์ง๋ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฒ์
+* ํ๋ํ๋ ๋ค ๋ค์ ธ๋ด์ผ ํจ
+* So, ์ฝ๋ ๊ฒ๋ณด๋ค ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆผ
+* `Random Access`๊ฐ ์์ด ์ฃผ์๋ฅผ ์ฐพ์ ๋ฐ์ค์ ์ฝ๊ฒ ์ ๊ทผ์ ๊ฐ๋ฅํ๋, ๊ทธ ๋ฐ์ค๋ฅผ ์ด์ด์ผ ๊ฐ์ ํ์ธ ๊ฐ๋ฅ
+* ๋ฐฐ์ด์ ์์ดํ
์ ํ๋ํ๋ **์ด์ด๋ณด๊ณ ๋ง๋์ง ์ฒดํฌํ๋ ๊ณผ์ ์ ํ๋ํ๋ ํด์ผ**ํจ
+* **Linear Search\[์ ํ ๊ฒ์]** : ์์๋๋ก 0๋ถํฐ ๋๊น์ง ์ฐจ๊ทผ์ฐจ๊ทผ ์ฐพ๋ ๊ฒ
+
+### **โจ** Insert\[Add] ํน์ ๋ฐฐ์ด์ ์ฐ๊ธฐ : O(n)
+
+* ๋ง์ฝ, โtomatoโ๋ฅผ ๋ฃ๊ณ ์ถ๋ค๋ฉด, ๋ฏธ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํด๋์ผ๋๊น ๊ณต๊ฐ ๊ฑฑ์ ์ No!
+* ๊ฒฐ๊ตญ `์ด๋์` ํ ๋งํ ๋ฅผ ์ถ๊ฐํ ๊ฒ์ธ๊ฐ!
+* ๋ง์ฝ ์ค๊ฐ์ด ์์ `์ถ๊ฐ`ํ๊ณ ์ถ๋ค๋ฉด **๋๋จธ์ง ๊ฐ๋ค์ ์ฎ๊ฒจ์ผ ํจ**(์๋์ ๊ฐ์ด)
+* ๊ทผ๋ฐ ๋ง์ฝ.. **๊ณต๊ฐ์ด ๊ฝ ์ฐจ ์๋๋ฐ** ๊ฐ์ ์ถ๊ฐํ๋ฉด ๋ฐฐ์ด์ ๊ธธ์ด๋ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๊ณค๋
+* โ **ํด๊ฒฐ๋ฐฉ์** : ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ทธ ๋ฐฐ์ด์ ์ด์ ๋ฐฐ์ด์ `๋ณต์ฌ`ํ๊ณ , ์๋ก `์ถ๊ฐ`ํด์ผ ํจ
+* ๊ทธ๋์ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ ๋ณต์ก
+
+### **โจ** Delete : O(N)
+
+๋ฐฐ์ด์ ๋ญ๊ฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๋น์ท
+
+๋ฐฐ์ด์ ์ด๋ฆฌ์ ๋ฆฌ ์์ง์ฌ์ผ ํจ
+
+EX. โice creamโ์ ์์ ๊ณ ์ถ์ด โ ์ญ์ ํ ๊ณต๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํด ์์ผ๋ก ๋ก๊ฒจ์ผ ํจ
+
+## 4. ๊ฒฐ๋ก
+
+***
+
+* ๋ฐฐ์ด์ ํตํฉ์ ์ธ ๋น
์ค๋ ๋ฐฐ์ด์ ๊ฐ ์ฐ์ฐ์ ์ต์
์ ๊ฒฝ์ฐ(**`O(N)`**)๋ฅผ ์ข
ํฉํ ๊ฒฐ๊ณผ์ผ ์ ์๋ค.
+* ๋ฐฐ์ด์ ์ ๊ทผ ์ฐ์ฐ์ ์ ์ธํ๋ฉด **ํ์, ์ฝ์
, ์ญ์ ์ฐ์ฐ์ ๋ํด ๋น๊ต์ ํจ์จ์ ์ด์ง ์์ ํธ**์ด๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ ๋ ์ด๋ฌํ ์ฐ์ฐ์ ํจ์จ์ฑ์ ๊ณ ๋ ค
+* ์คํ๋ ค ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์ญ์ ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๋ ๋น ๋ฅด๊ณ ๋ฐฐ์ด์ ๋๋ฆผ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์ผ๋ก ์ฏ๊ฒจ์ผ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํ์ง๋ง, ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ ์ ๋ฐ๊ฟ์ ์ฐ๊ฒฐํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ
diff --git "a/developLog/algorithm-datastructure/data-structure/_ \354\212\244\355\203\235\352\263\274 \355\201\220_.md" "b/developLog/algorithm-datastructure/data-structure/_ \354\212\244\355\203\235\352\263\274 \355\201\220_.md"
new file mode 100644
index 0000000..02e6831
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ \354\212\244\355\203\235\352\263\274 \355\201\220_.md"
@@ -0,0 +1,120 @@
+# ์คํ๊ณผ ํ
+
+> ์ถ์ฒ : https://www.youtube.com/watch?v=Nk\_dGScimz8
+
+## 1. ๋ค์ด๊ฐ๊ธฐ ์
+
+> ์คํ๊ณผ ํ๋ ์ฐ๋ฆฌ์ ์์์๋ง ์กด์ฌ ์ค์ ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์์๋ ์กด์ฌํ์ง ์์ ์คํ๊ณผ ํ๋ **์ผ์ข
์ ๊ท์น**
+
+### ์ถ์์ ์๋ฃ๊ตฌ์กฐ
+
+* ์๋ฃ๊ตฌ์กฐ์ ๋ฐฉ๋ฒ์ด ์ฝ๋๋ก ์ ์ ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ๊ตฌ์กฐ์ ํ๋ ์์์๋ง ์ค๋ช
+* ์คํ๊ณผ ํ๋ **๊ฒฐ๊ตญ ๋ฐฐ์ด ์์ ์ด๋ค ๊ท์น์ ์ค์ ํ ๋ชจ์ต**
+
+## **2. ์คํ**
+
+### 1) **์คํ์ ๊ฐ๋
**
+
+์คํ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์๋ฃ๋ฅผ ๋ฃ๊ณ ๊บผ๋ผ ์ ์๋ **`LIFO(Last-In-First-Out)`** ํ์์ ์๋ฃ ๊ตฌ์กฐ
+
+* **`์ ์
ํ์ถ`** ๊ตฌ์กฐ ๋๋ **`ํ์
์ ์ถ`** ๊ตฌ์กฐ : ๋ฐ์ค๋ ์๋๋ถํฐ ์๋ก ์๋๋ฐ ๊ทธ ์๋์ ์๋ ๋ฐ์ค๋ฅผ ์น์ฐ๊ธฐ ์ํด์ ์์ ์๋ ๋ฐ์ค๋ถํฐ ๋ด๋ ค์ผ ํจ
+* stack.append() : **์ฝ์
(PUSH)**, stack.pop() : **์ญ์ (POP)**
+* print(stack\[::-1]) : ์ต์๋จ ์์๋ถํฐ ์ถ๋ ฅ
+* print(stack) : ์ตํ๋จ ์์๋ถํฐ ์ถ๋ ฅ(๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ค)
+
+### 2) ์์
+
+* ํฌ์ผ์ดํฌ๋ฅผ ์๋ก ์๋๋ค๊ณ ํ์ ๋ ๋ง ๋ง๋ ๊ฑธ ์๋ก ์ฌ๋ฆผ ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ ์ฌ๋ฆฐ ๊ฑฐ\[Last in] ๋จผ์ ๋จน๋\[First Out] ํ์
+
+### 3) **์คํ์ ๊ตฌ์กฐ**
+
+* **ํ ๋ฐฉํฅ์ผ๋ก๋ง** PUSH์ POP์ ์ด์ฉํ์ฌ ์๋ฃ๋ฅผ ๋ฃ๊ณ ๊บผ๋ธ๋ค
+* TOP์ ์คํ์์ ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ๋ก, **์คํ ํฌ์ธํฐ**๋ก ๋ถ๋ฆฐ๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/2dcc061c-d90c-45fc-ac02-13c3e9973105/image.png)
+
+### 4) **์คํ ์์ฉ ๋ถ์ผ**
+
+* **์ธํฐ๋ฝํธ์ ์ฒ๋ฆฌ** : ํ์ฌ ์งํ ์ค์ธ ๋ช
๋ น์ด ์์น๋ฅผ ์คํ์ pushํ๊ณ , ์ธํฐ๋ฝํธ ๋ฐ์ ์ํฉ ์ฒ๋ฆฌ ํ ์คํ์์ pop์ ํตํด ์ ์ ์งํ์ค์ด๋ ๊ฒ์ ๋ฐ์์ด, **์๋ธ๋ฃจํด ํธ์ถ ์์
**
+* **ํจ์ ํธ์ถ(์ฌ๊ท ํธ์ถ ํฌํจ)** : ํจ์๋ฅผ ํธ์ถ ์ ํ์ฌ ์งํ ์ค์ธ ๋ช
๋ น์ด ์ฃผ์๋ฅผ ์คํ์ ์ ์ฅ
+* **ํ์ํํ ์ฐ์ฐ** : postifix ๊ณ์ฐ์ ์ฌ์ฉ
+* **๊น์ด ์ฐ์ ํ์(DFS : Depth-First Search)** : ๊น์ด ๋ด๋ ค๊ฐ ๋๋ง๋ค ์คํ์ ๊ฐ์ pushํ๊ณ , ๋ ์ด์ ๊น์ด ๊ฐ ๊ณณ์ด ์์ ๊ฒฝ์ฐ ์คํ์์ popํ ๋
ธ๋์ ์ธ์ ํ ๋
ธ๋๋ฅผ ์ฐพ์
+* ํ์์ ํ๊ณ ์๋ ๋ถ๊ธฐ์์ **์๋ฒฝํ๊ฒ ํ์์ ํ ์ดํ** ๋ค๋ฅธ ๋ถ๊ธฐ๋ฅผ ํ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/a30c0618-c8b7-4091-bc49-b0205ad71469/image.png)
+
+### 5) **BFS๋**
+
+* ๋๋น ์ฐ์ ํ์
+* **๊ฐ๊น์ด ๋
ธ๋๋ถํฐ ํ์**
+* ์ ์
์ ์ถ ๋ฐฉ์์ธ ํ ์๋ฃ๊ตฌ์กฐ ์ด์ฉ
+* ์์ ๋
ธ๋๋ฅผ ๋ฃ์ ๋ค์ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ํ ์์ ๋
ธ๋๋ฅผ ๊บผ๋ด๊ณ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋
ธ๋ ๋ชจ๋๋ฅผ ํ์ ์ฝ์
+* ์ค์ ์ํ ์๊ฐ DFS๋ณด๋ค ์ข์ ํธ
+* **A(์ธ์ ํ B, C, D๋ฐฉ๋ฌธ) > B -> C -> D -> E(B์ ์ธ์ ํ)** **> F(C์ ์ธ์ ํ) > G(F์ ์ธ์ ํ)**
+
+## **3. ํ(Queue)**
+
+### **1) ํ์ ๊ฐ๋
**
+
+: ํ๋ ํ์ชฝ ๋์์๋ ์ฝ์
์์
์ด ์ด๋ค์ง๊ณ , ๋ฐ๋์ชฝ ๋์์๋ ์ญ์ ์์
์ด ์ด๋ฃจ์ด์ง **`FIFO(First-In-First-Out)`** ํ์์ ์๋ฃ ๊ตฌ์กฐ
+
+* ๋๊ธฐ์ค์ ๋น์
+* **์ ์
์ ์ถ ๊ตฌ์กฐ** : ๋์ค์ ์จ ์ฌ๋์ผ์๋ก ๋์ค์ ๋ค์ด๊ฐ๋ ๊ณต์ ํ ์๋ฃ๊ตฌ์กฐ
+* queue.append(): ์ฝ์
, `queue.popleft()` : ์ญ์
+
+#### ์์
+
+* ์ค ๋งจ ์์ ์ ์๋ ์ฌ๋์ด ๊ฐ์ฅ ๋จผ์ ๋ฒ์ค๋ฅผ ํ๋ ์๋ฆฌ
+* ํ **๋ค์** ์์๋ฅผ `์ถ๊ฐ`
+* ํ **์์** ์์๋ฅผ `์ ๊ฑฐ`\[First Out]
+
+### **2) ํ ๊ตฌ์ฑ๋**
+
+![](https://velog.velcdn.com/images/prettylee620/post/eceea723-6e1a-42d8-81e6-0e7c7ab0508a/image.png)
+
+* ํ์ชฝ์์๋ **ENQUEUE ์ฐ์ฐ**์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ํ์ชฝ์์๋ **DEQUEUE๋ก ์ฐ์ฐ**์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ธ๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/b7b02c3f-9aeb-4fa0-8be7-9b5e6c240561/image.png)
+
+* ๋ฐ์ดํฐ๊ฐ **๊บผ๋ด๋ ์ชฝ์์** ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ๋ฅผ `Front[์]`๋ผ๊ณ ๋ฐ์ดํฐ๋ฅผ **๋ฃ๋ ์ชฝ์** ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ๋ฅผ `Rear[๋ค]`์ด๋ผ๊ณ ํจ
+
+## **4. ํ
ํฌ**
+
+### **1) ํ
ํฌ(Deque:Double Ended Queue)์ ๊ฐ๋
**
+
+![](https://velog.velcdn.com/images/prettylee620/post/5a1ed890-219c-4f66-abb5-115c682cc3b5/image.png)
+
+: ํ
ํฌ๋ ํ์ ์์ชฝ ๋์์ ์ฝ์
๊ณผ ์ญ์ ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ
+
+### **2) ํ
ํฌ์ ๊ตฌ์ฑ๋**
+
+* ๋ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ, ์์ชฝ์ ์ญ์ /์ฝ์
์ด ๊ฐ๋ฅํ๋ค.
+* ๋ฐํฌ๋ฅผ ์ด์ฉํ ์คํ๊ณผ ํ์ ๊ตฌํ ๊ฐ๋ฅ
+* PUSH : ์ฝ์
POP : ๋ฐํฌ์์ Fornt์ Rear์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๊บผ๋ด๋ ์ฐ์ฐ
+
+## 5. ๊ทธ๋์ ์ธ์ ์ฐ๋๋ฐ?
+
+#### ์คํ
+
+1. ๋ค๋ก๊ฐ๊ธฐ
+
+* ๋ค๋ก ๊ฐ๊ธฐ๋ฅผ ๋๋ฅธ๋ค๋ ๊ฒ์ ์นํ์ด์ง ํ์คํ ๋ฆฌ ์คํ์ ๋งจ ์์์ ํ ํ์ด์ง๋ฅผ ๊ฐ์ ธ ๊ฐ๋ ๊ฒ
+
+![](https://velog.velcdn.com/images/prettylee620/post/fb9e92c5-18d6-4956-a3d2-42d8df67cc2c/image.png)
+
+2. ๋๋๋ฆฌ๊ธฐ : ctrl + z
+
+* ์ ์ ํ๋ ํ๋์ ์ฐจ๊ณก์ฐจ๊ณก ์๋ค๊ฐ ๋๋๋ฆฌ๊ธฐ ์๊ฐ ์คํ์ผ๋ก ๊ฐ์ฌ ๊ณผ๊ฑฐ๋ฅผ ๋๋๋ฆด ์ ์๋
+
+![](https://velog.velcdn.com/images/prettylee620/post/7ae90aa8-a7af-4e1e-aa9d-1a0340b64705/image.png)
+
+#### ํ
+
+1. ์ด๋ฉ์ผ ์ ๋ฌ
+2. ํธ์ฌ ์๋ฆผ ๊ธฐ๋ฅ
+3. ์ผํ๋ชฐ์์ ์ฃผ๋ฌธ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
+4. ์ฝ์ผํฐ์ ๋ฐฑ์๋(์ ํ ์จ ์์๋๋ก ์ฒ๋ฆฌ)
+
+## ๊ฒฐ๋ก
+
+> ์ค์ ๋ก ์กด์ฌํ์ง๋ ์์ง๋ง ๊ท์น์ ์ ๊ณตํ๊ณ ๋๋ถ์ ์๋ฃ๋ฅผ ์ข ๋ ๊ตฌ์กฐ์ ์ผ๋ก ์๊ฐ ๊ฐ๋ฅ
diff --git "a/developLog/algorithm-datastructure/data-structure/_ \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270_.md" "b/developLog/algorithm-datastructure/data-structure/_ \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270_.md"
new file mode 100644
index 0000000..d4c55fa
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270_.md"
@@ -0,0 +1,136 @@
+# ์ฐ๊ฒฐ ๋ฆฌ์คํธ
+
+์ถ์ฒ : [https://www.youtube.com/watch?v=K1PlysPgNZY\&t=20s](https://www.youtube.com/watch?v=K1PlysPgNZY\&t=20s)
+
+์ฌ์ง ์ถ์ฒ : ฤen @Quyetnguyen0330
+
+## 1. ์ ํ ๊ตฌ์กฐ๋?
+
+***
+
+1. **์๋ฃ ๊ตฌ์กฐ์ ๋ถ๋ฅ**
+
+| ๊ตฌ์กฐ | ์ค๋ช
| ์ข
๋ฅ |
+| ------ | --------------------- | -------------- |
+| ์ ํ ๊ตฌ์กฐ | ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์๋ฃ ๊ตฌ์กฐ | ๋ฆฌ์คํธ, ์คํ, ํ, ๋ฐํฌ |
+| ๋น์ ํ ๊ตฌ์กฐ | ๋ฐ์ดํฐ๋ฅผ ๋น์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์๋ฃ ๊ตฌ์กฐ | ํธ๋ฆฌ, ๊ทธ๋ํ |
+
+2. **๋ฆฌ์คํธ**
+
+| ์ข
๋ฅ | ์ค๋ช
|
+| ------------------------------------------------------------ | --------------------------------------------------------------------------------- |
+| ์ ํ ๋ฆฌ์คํธ | |
+| (Linear List) | - ๋ฐฐ์ด๊ณผ ๊ฐ์ด ์ฐ์๋๋ ๊ธฐ์ต ์ฅ์์ ์ ์ฅ๋๋ ๋ฆฌ์คํธ |
+| ๋ํ์ ์ธ ๊ตฌ์กฐ : ๋ฐฐ์ด(Array) ๋ฑ | |
+| ๊ฐ์ฅ ๊ฐํธํ ์๋ฃ ๊ตฌ์กฐ์ด๋ฉฐ, ์ ๊ทผ ๊ตฌ์กฐ๊ฐ ๋น ๋ฆ | |
+| ์์ฐจ์ | |
+| ์๋ฃ ์ฝ์
, ์ญ์ ์ ๊ธฐ์กด ์๋ฃ์ ์ด๋์ด ํ์ | |
+| ์ฐ๊ฒฐ ๋ฆฌ์คํธ | |
+| (Linked List) | ๋
ธ๋(๋ฐ์ดํฐ์ ์ ์ฅ ๋ถ๋ถ๊ณผ ํฌ์ธํฐ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์ฅ๊ณต๊ฐ)์ ํฌ์ธํฐ(=๋งํฌ) ๋ถ๋ถ์ผ๋ก ์๋ก ์ฐ๊ฒฐ์ํจ ๋ฆฌ์คํธ๋ฐ์ดํฐ(Data)ํฌ์ธํฐ(Pointer) |
+| ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌ๋ถ | |
+| ์์ฐจ์ ์ด์ง ์์ | |
+| cf. ์ฐ์ ๋ฆฌ์คํธ(์์ฐจ์ ) | |
+| ๋
ธ๋์ ์ฝ์
, ์ญ์ ๊ฐ ์ ํ ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ํธ๋ฆฌ | |
+| ์ฐ๊ฒฐ์ ์ํ ํฌ์ธํฐ๊ฐ ์ถ๊ฐ๋์ด ์ ์ฅ๊ณต๊ฐ์ด ์ถ๊ฐ๋ก ํ์ | |
+| ํฌ์ธํฐ๋ฅผ ํตํด ์ฐพ๋ ์๊ฐ์ด ์ถ๊ฐ๋์ด ์ ํ ๋ฆฌ์คํธ์ ๋นํด ๋๋ฆผ | |
+
+## 2. ์ฐ๊ฒฐ๋ฆฌ์คํธ๋?
+
+
+
+### 1) ๊ฐ๋
+
+* ์ฐ์๋ `๋
ธ๋(Node)`์ ์ฐ๊ฒฐ์ฒด
+* ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ผ ๋
ธ๋๋ฅผ ํฌ์ธํฐ๋ก ์ฐ๊ฒฐํด์ ๊ณต๊ฐ์ ์ธ ํจ์จ์ฑ์ ๊ทน๊ฐํ์ํจ ์๋ฃ ๊ตฌ์กฐ
+
+### 2) ๋
ธ๋(Node)
+
+
+
+* ์ฐ๊ฒฐ๋ฆฌ์คํธ์์ ์ฌ์ฉ๋๋ ํ๋์ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์ด๋ฉฐ, `๋ฐ์ดํฐ & ๋งํฌ`์ด 2๊ฐ์ง์ ํ๋๋ฅผ ๋ด๊ณ ์๋ ๊ตฌ์กฐ
+* data : ๋
ธ๋๊ฐ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ/๊ฐ, ๋ฌธ์์ด, ์ซ์ ๋ฑ๋ฑ ์ํ๋ ๊ฐ์ ๋ฃ๊ณ ์ ์ฅ
+* next : ๋งํฌ/ ํฌ์ธํฐ ์ญํ , ๋ค์ ๋
ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅ
+* **์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ** `prev ํฌ์ธํฐ(์ด์ ๋
ธ๋์ ์ฃผ์)`์ถ๊ฐ
+
+### 3) ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ตฌ์กฐ
+
+
+
+1. ๋ง์ง๋ง ์ฐ๊ฒฐํ ๊ฒ์ ์๊ธฐ์ null๊ณผ ์ฐ๊ฒฐ
+2. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์ฆ, ์์ ์ง์ ์ ์๋ ๊ฒ์ `head`๋ผ๊ณ ํจ
+3. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ง์ง๋ง์ `tail`๋ผ๊ณ ๋ถ๋ฆ
+
+### 4) ๋ฐฐ์ด vs ์ฐ๊ฒฐ๋ฆฌ์คํธ
+
+
+
+#### ๋ฐฐ์ด
+
+1. ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์์ ๋ชจ๋ ์์๋ค์ด ์ด์ด์ง ๊ณต๊ฐ์ ์๋ฆฌ ์ก์
+2. **์ธ๋ฑ์ค**๋ฅผ ํตํด ์์ ํ์์ ํจ์จ์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์คํ ๊ฐ๋ฅ
+3. **random access ๊ฐ๋ฅ** : ๋ฐฐ์ด์ n๋ฒ์งธ ์์ ๋ฐฉ๋ฌธ ์ `O(1)` ์๊ฐ์ผ๋ก ๊ฐ๋ฅ EX. arr\[3]
+4. ์์ ์ฝ์
& ์ญ์ ์ผ๋ฐ์ ์ผ๋ก `O(N)` ์๊ฐ ์์ โ ์์ ๊ฐ์ ๋๋ก ๋์ด๋จ
+
+#### 5) ์ฐ๊ฒฐ๋ฆฌ์คํธ
+
+1. ์ด์ด์ง ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์๋ ๋ถํน์ ํ ๊ณต๊ฐ์ ์กด์ฌ
+2. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ **ํฌ์ธํฐ, ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ**์ ํตํด ์ฐ๊ฒฐ
+3. ๋
ธ๋์ ํ์์ **์ ํ์๊ฐ์ด ๊ฑธ๋ฆผ**
+4. c๋ฅผ ๊ฐ๋ ค๋ฉด a, b๋ฅผ ๊ฑฐ์ณ ๊ฐ
+5. `random access` ๋ถ๊ฐ๋ฅ : ๋ฆฌ์คํธ์ n๋ฒ์งธ ๋
ธ๋ ๋ฐฉ๋ฌธ ์ O(N)์๊ฐ ์์ โ head ๋
ธ๋๋ถํฐ n๋ฒ์งธ ๋
ธ๋๊น์ง ์ํ
+6. ์ํฉ์ ๋ฐ๋ผ ๋ฐฐ์ด๋ณด๋ค ๋นจ๋ผ์ง ์ ์๋ ๋
ธ๋ ์ฝ์
& ์ญ์
+7. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋
ธ๋๋ฅผ ๋งจ ์์ ์ฝ์
์์ผ์ค ๋๋ head ๋
ธ๋์ ์ฐธ์กฐ์์น๋ง ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ `O(1)` ์ฒ๋ฆฌ ๊ฐ๋ฅ
+
+### 6) ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ข
๋ฅ
+
+#### Singly Linked List(๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ)
+
+
+
+1. ๋๋ถ๋ถ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ฌธ์ ์ ์ฃผ๋ ฅ
+2. ๋ค์ ๋
ธ๋์ ๋ํ ํฌ์ธํฐ๋ง ๊ฐ์ง๊ณ ์๋ค
+3. ์ผ๋ฐฉํฅ์ด๋ค.
+
+#### Doubly Linked List(์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ)
+
+
+
+1. ๋ค์ ๋
ธ๋์ ๋ํ ํฌ์ธํฐ์ ์ด์ ๋
ธ๋๋ฅผ ๊ฐ๋ฅด์น๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
+2. ์ ๋ค๋ก ํ์ํ๋ ๊ฒ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ๋
ธ๋๋ง๋ค 2๊ฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ ธ์ผ ํด์ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ํ๋ฆ์ด ๋ณต์กํด์ง ์ ์์
+
+#### Circular Linked List(์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ)
+
+
+
+* ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๊ฐ์ง๋ง **๋ง์ง๋ง ๋
ธ๋์ next ํฌ์ธํฐ๊ฐ ํค๋ ๋
ธ๋**๋ฅผ ๊ฐ๋ฅด์น๋ค.
+
+### 6) ์ฐ๊ฒฐ๋ฆฌ์คํธ ๊ตฌํ ๋ฐฉ๋ฒ
+
+#### ๋
ธ๋์ ๊ตฌํ ๋ฐฉ๋ฒ
+
+
+
+```jsx
+class Node{
+ constructor(data){
+ this.data = data;
+ this.next = null;
+ }
+}
+```
+
+#### ์ฐ๊ฒฐ๋ฆฌ์คํธ
+
+
+
+```jsx
+let head = new Node("a");
+head.next = new Node("b");
+head.next.next = new Node("c");
+head.next.next.next = new Node("d");
+```
+
+1. ์์์ : head ๋ณ์์ ์๋ก์ด ๋
ธ๋๋ฅผ a๋ผ๋ ๋ณ์์ ํจ๊ป ์์ฑ
+2. head๋ผ๋ ๋
ธ๋์ next๋ผ๋ ์ฐธ์กฐ ํฌ์ธํฐ๋ฅผ ์๋ก ์์ฑํ ๋
ธ๋ b๋ก ์ง์
+3. ๋
ธ๋ b๋ฅผ ์๋ก ์์ฑํ ๋
ธ๋ c๋ก ์ง์
+4. ๋ง์ง๋ง ๋
ธ๋ ์ง์
diff --git "a/developLog/algorithm-datastructure/data-structure/_ \354\232\260\354\204\240\354\210\234\354\234\204 \355\201\220\354\231\200 \355\236\231\354\235\230 \354\260\250\354\235\264_.md" "b/developLog/algorithm-datastructure/data-structure/_ \354\232\260\354\204\240\354\210\234\354\234\204 \355\201\220\354\231\200 \355\236\231\354\235\230 \354\260\250\354\235\264_.md"
new file mode 100644
index 0000000..4e1af82
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ \354\232\260\354\204\240\354\210\234\354\234\204 \355\201\220\354\231\200 \355\236\231\354\235\230 \354\260\250\354\235\264_.md"
@@ -0,0 +1,149 @@
+# ์ฐ์ ์์ ํ์ ํ์ ์ฐจ์ด
+
+> ์ฌ์ด์ฝ๋๋ ๊ฐ์๋ค ๋ฃ๊ณ ์ ๋ฆฌํ์ต๋๋ค! ๋ฌธ์ ์ ์ญ์ ํ ๊ฒ์
+
+## 1. Priority queue(์ฐ์ ์์ ํ)
+
+### ๐ ๊ฐ๋
+
+* ํ์ ์ ์ฌํ์ง๋ง ์ฐ์ ์์๊ฐ ๋์ ์์ดํ
์ด ๋จผ์ ์ฒ๋ฆฌ๋จ
+
+### ๐ ์ฐ์ ์์ ํ ์ฃผ์ ๋์
+
+1. insert : ์์ดํ
์ฐ์ ์์ ์์ผ๋ก ๋ฃ์ด์ค
+2. delete : ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ ๋นผ๋
+3. peek : delete์ ๊ฐ์ง๋ง ์ฐ์ ์์ ํ์์ ์ ๊ฑฐ๋ ์ํจ
+
+### ๐ ์ฐ์ ์์ ํ ๋์ ๋ฐฉ์ ์ค๋ช
+
+![](https://velog.velcdn.com/images/prettylee620/post/273a6e9d-212d-48d9-870f-1c8657002fc8/image.png)
+
+1. delete๋ฅผ ํธ์ถํ๋ฉด ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ 20์ด ์ฌ๋ผ์ง๊ฒ ๋จ
+
+![](https://velog.velcdn.com/images/prettylee620/post/b058280b-41ab-4849-8803-345285d88a01/image.png)
+
+2. ๋ ๋ฒ์งธ๋ก delete๋ฅผ ํธ์ถํ๋ฉด ์ฐ์ ์์๊ฐ ๋์ 10์ด ์ฌ๋ผ์ง๊ฒ ๋จ
+
+![](https://velog.velcdn.com/images/prettylee620/post/a6b3a01b-5c3d-4fdd-9aa5-0a3c0c108277/image.png)
+
+3. ๋ delete๋ฅผ ํธ์ถํ๋ฉด 5๊ธฐ ์ฌ๋ผ์ง๊ฒ ๋๋ค. ![](https://velog.velcdn.com/images/prettylee620/post/febd8e08-de79-4724-92e3-76ff6c4ee32d/image.png)
+
+## 2. Heap
+
+### ๐ ํ์ ๊ฐ๋
+
+* ์ฃผ๋ก ์ด์ง ํธ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ์ด ๋จ
+* `ํธ๋ฆฌ(tree)` : ๋ถ๋ชจ - ์๋
์ฒ๋ผ ๊ณ์ธต์ ์ธ ํํ๋ฅผ ๊ฐ์ง๋ ๊ตฌ์กฐ
+* `์ด์ง ํธ๋ฆฌ` : ์๋
๊ฐ ์ต๋ ๋ ๊ฐ์ธ ํธ๋ฆฌ
+
+#### max heap
+
+![](https://velog.velcdn.com/images/prettylee620/post/e3d76064-d7b4-4ef7-8b58-ffeda6a86b96/image.png)
+
+* ๋ถ๋ชจ ๋
ธ๋์ ํค๊ฐ ์์ ๋
ธ๋์ ํค๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ํธ๋ฆฌ
+* ์๋ธํธ๋ฆฌ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฉ๋์ด์ผ ํจ
+
+#### min heap
+
+* max heap์ ๋ฐ๋
+
+### ๐ ํ ์ฃผ์ ๋์
+
+1. insert : ํ์ ์์ดํ
์ ์ง์ด๋ฃ์ ๋ ํค๊ฐ๋ ๊ฐ์ด ๋ฃ์ด์ค์ผ ํจ
+2. delete : ํค ๊ฐ์ด ๊ฐ์ฅ ํฐ ๊ฐ์ ๋นผ๋
+3. peek : delete์ ๊ฐ์ง๋ง ๊บผ๋ด์ง๋ ์๋๋ค.
+
+### ๐ max heap์ insert ๋์ ์๋ฆฌ ์ค๋ช
+
+![](https://velog.velcdn.com/images/prettylee620/post/3d7d80c8-f7cf-446a-911f-2cd3ab732680/image.png)
+
+1. max heap์์ inert(17)ํ๋ฉด 11๋ฒ์งธ ๊ณต๊ฐ์ ์ผ๋จ 17์ด๋ผ๋ ๊ฐ์ ๋ฃ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/8d1e69a7-c885-40e7-a98e-3b73c012a7ab/image.png)
+
+2. ๋ถ๋ชจ๋ณด๋ค ๋ ํฌ๊ธฐ ๋๋ฌธ์ 3์ด๋ ์ค์์นญ
+
+![](https://velog.velcdn.com/images/prettylee620/post/5b8c99c5-2f48-43fb-8490-afdf174de003/image.png)
+
+3. 15์ ๋ ๋น๊ตํด์ค
+
+![](https://velog.velcdn.com/images/prettylee620/post/c8e4194c-86c4-402a-8f7d-46dd414175d6/image.png)
+
+4. 20์ด๋ ๋น๊ต ํ ์๋ฆฌ ์ ๋ฐ๊ฟ๋ ๋ผ์ ๋์ด ๋จ
+
+### ๐ max heap์ delete ๋์ ์๋ฆฌ ์ค๋ช
+
+1. ๋ฃจํธ ๋
ธ๋์ ํค ๊ฐ์ด ํธ๋ฆฌ ์ค์ ๊ฐ์ฅ ํผ โ ์ญ์ ๋ฅผ ํ ๋ ๋ฃจํธ ๋
ธ๋๊ฐ ์ฌ๋ผ์ง
+
+![](https://velog.velcdn.com/images/prettylee620/post/ace0ae45-e3af-456e-bae2-90eff4864a01/image.png)
+
+2. ๊ทธ๋ผ ๋ญ๋ฅผ ๋ฃจํธ๋
ธ๋๋ก ์ฌ๋ฆด๊น?
+
+![](https://velog.velcdn.com/images/prettylee620/post/34aa8bd5-ef54-413d-b9da-bf03411b7ae6/image.png)
+
+3. ๊ทธ๋ฆฌ๊ณ max heap์ ์ ์ง์์ผ์ฃผ๊ธฐ ์ํด ์๋
์ ๋น๊ตํด์ ์ฒด์ธ์ง ํด์ค์ผ ํจ
+
+* 15, 11๋ชจ๋ 2๋ณด๋ค ํฌ๊ธฐ์ ๊ทธ ์ค ๋ ํฐ 15๋ฅผ ๋ฃจํธ ๋
ธ๋๋ก ์ฌ๋ฆผ
+
+![](https://velog.velcdn.com/images/prettylee620/post/312994b2-cd8c-4a72-94c5-0fbabe689c1f/image.png)
+
+4. ๋ ์๋
์ ๋น๊ต
+
+* 12, 3 ๋ชจ๋ 2๋ณด๋ค ํฐ๋ฐ 12๊ฐ ๋ ํฌ๊ธฐ ๋๋ฌธ์ 12์ ์ฒด์ธ์ง
+
+![](https://velog.velcdn.com/images/prettylee620/post/dada83bc-7ee3-4010-95a9-3fabe30f4d70/image.png)
+
+5. ๋ง์ฐฌ๊ฐ์ง ์๋
์ ๋น๊ต
+
+* 7๊ณผ 5๋ชจ๋ 2๋ณด๋ค ํฐ๋ฐ ๊ทธ ์ค ๋ ํฐ 7์ ์๋ก ์ฌ๋ฆฐ๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/c3abe9b9-a8a3-43f8-b39d-db7e7f6f4c8b/image.png)
+
+## 3. priority queue์ Heap์ ๊ด๊ณ
+
+### ๐ ๊ด๊ณ
+
+1. ํ(Heap)์ ํค(key)๋ฅผ ์ฐ์ ์์(priority)๋ก ์ฌ์ฉํ๋ค๋ฉด, **ํ์ ์ฐ์ ์์ ํ(priority queue)์ ๊ตฌํ์ฒด๊ฐ ๋๋ค.**
+2. Priority queue = ADT(๊ตฌํ์ ์ค์ ํ์ง ์๊ณ ๊ฐ๋
์ ์ธ ๊ฒ๋ง ์ค๋ช
)
+ 1. **์ถ์ ์๋ฃํ**(abstract data type)
+ 2. `์ถ์ ์๋ฃํ`์ **๊ตฌํ ๋ฐฉ๋ฒ์ ๋ช
์ํ๊ณ ์์ง ์๋ค๋ ์ **์์ ์๋ฃ ๊ตฌ์กฐ์ ๋ค๋ฅด๋ค. ๋น์ทํ ๊ฐ๋
์ ์ถ์์ ์๋ฃ ๊ตฌ์กฐ๋ ๊ฐ ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ช
๊ธฐํ๊ณ ์์ง๋ง ์ถ์์ ์๋ฃํ์์๋ ์ด๊ฒ์กฐ์ฐจ ๋ช
๊ธฐํ์ง ์๋๋ค.
+ 3. ์ถ์ ์๋ฃํ์ ์ธํฐํ์ด์ค์ ๊ตฌํ์ ๋ถ๋ฆฌํ์ฌ ์ถ์ํ ๊ณ์ธต์ ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ์ ๊ธฐ ๋ฐฅ์ฅ์ **์ถ์ ์๋ฃํ**์ ๋น์ ํ๋ค๋ฉด ๊ทธ ์์ ๋ค์ด๊ฐ๋ **๋ฐฅ์ ์๋ฃ**๊ฐ ๋๊ณ , ๋ฐฅ์ฅ์ ์๋ ์ทจ์ฌ, ์์ฝ์ทจ์ฌ ๋ฒํผ๋ค๊ณผ ๋จ์ ์๊ฐ์ ํ์ํ๋ ๋์คํ๋ ์ด์ ์ด๋ค ๋ด์ฉ๋ค์ด ํ์๋์ด์ผ ํ๋์ง๋ฅผ ๋ช
๊ธฐํ ๊ฒ์ด๋ค.
+3. Heap = data structure(๊ตฌํ๊น์ง ์์)
+4. ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋ค์ํ ๊ฒ๋ค์ด ์๊ฒ ์ง๋ง, ํ์ ๋์ฒด๋ก ๋ง์ด ์ฌ์ฉํด์ ๋์ผ์ ํ๋ ์ฌ๋๋ค์ด ์๋ค.
+
+## 4. ์ฐ์ ์์ ํ์ ํ์ ์ฌ์ฉ ์ฌ๋ก
+
+### ๐ ํ๋ก์ธ์ค ์ค์ผ์ค๋ง(process scheduling)
+
+1. cpu์์ ํ์ฌ ๋์ํ๊ณ ์๋ ํ๋ก์ธ์ค๊ฐ p1์ด๋ผ๋ฉด p2, p3, p4๋ ๋๊ธฐํด์ผ ํ๋๋ฐ ๋๊ธฐํ ๋, `ready queue`์ ๋๊ธฐํ๋ค.
+2. ๊ทผ๋ฐ ready queue๊ฐ FIFO์ด ์๋๋ผ ์ฐ์ ์์ ํ๋ผ๋ฉด P1์ด cpu ์์
์ ๋ค ๋๋์ ๋, ๋ค์ด์จ ์์ด ์๋๋ผ **์ฐ์ ์์๊ฐ ๋์ ์ ๊ฐ** ๋จผ์ ์์
์ ํ๊ฒ ๋จ
+
+![](https://velog.velcdn.com/images/prettylee620/post/96fdd7e2-c54e-45b9-8774-a3c8719d7922/image.png)
+
+### ๐ heap sort(ํ ์ ๋ ฌ)
+
+1. ์ ๋ ฌ n๊ฐ์ ์์ดํ
โ ํ์ ๋ค ๋ฃ์ด์ ์ฐจ๋ก์ฐจ๋ก delete() ์ ์ ๋ ฌ๋์ด์ ๋์ค๊ฒ ๋จ
+
+### ๐ Heap ๋ฉ๋ชจ๋ฆฌ๋? ํ๊ณผ ๊ฐ๋..?
+
+* No, ํ ๋ฉ๋ชจ๋ฆฌ์ ํ์ ์ค๋ ๋ฐฐ์ด ํ๊ณผ๋ ๊ด๋ จ์ด ์๋ค
+* ํ ๋ฉ๋ชจ๋ฆฌ์ ํ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋๋ฏธ ๋๋
+
+#### ํ ๋ฉ๋ชจ๋ฆฌ
+
+1. **์คํ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ๋ณด์**
+ 1. ์๋ช
: ์คํ ๋ฉ๋ชจ๋ฆฌ์ ๊ฒฝ์ฐ ํจ์๊ฐ ๋ฐํ๋๋ ์๊ฐ ๊ทธ ์์ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ค ๋ ๋ผ๊ฐ๋ฉฐ, ์ ์ญ ๋ณ์๋ ์ธ์ ๋ ์ด์์๊ณ , ์ง์ญ ๋ณ์๋ ํจ์ ์์์๋ง ์ ํจ
+ 2. ํฌ๊ธฐ : ์คํ๋ฉ๋ชจ๋ฆฌ๋ ํน์ ์ฉ๋๋ก ๋ผ์ด๋์ ๊ฒ์ด๋ผ ํฌ๊ธฐ๊ฐ ์๋ค. ์ฉ๋์ ์ ํ์
+2. **ํ ๋ฉ๋ชจ๋ฆฌ์ ์ฅ์ \[unmanaged]**
+ 1. ํฌ๊ธฐ : ์ปดํ์ผ๋ฌ ๋ฐ CPU๊ฐ ์๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ **ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํ๋ ๋, ์ํ๋ ๋งํผ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋ฐ์์ ์ฌ์ฉํ๊ณ ์ํ ๋ ๋ฐ๋ฉ(ํด์ ) ํ ์ ์๋ค.**
+ 2. ์ฉ๋ ์ ํ ์์ : ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฐ์ดํฐ์ ์๋ช
์ ์ง์ ์ ์ดํ ์ ์์ด, ์ปดํจํฐ์ ๋จ์์๋ ๋ฉ๋ชจ๋ฆฌ๋งํผ ์ฌ์ฉ ๊ฐ๋ฅ โ ํธ์ถ์ด ๋๋๋ค๊ณ ์ฌ๋ผ์ง์ง ์๋๋ค.
+3. **ํ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ **
+ 1. **๋ฉ๋ชจ๋ฆฌ ๋์ ์ํ์ฑ ์์** : ๋งค๋์ง๋ ์ธ์ด์ธ JAVA๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋ฐ์ ๋ new ํค์๋ ์ฌ์ฉํ๋ฉฐ, ์ฌ์ฉ ํ์๋ ํด์ ์ ๊ฒฝ์ ์์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ์์์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง **c๋ ์ธ๋งค๋์ง๋๋ผ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ํด์ค์ผ ํ๋ค.**
+ 2. **์คํ์ ๋นํด ํ ๋น/ํด์ ์๋๊ฐ ๋๋ฆผ** : ํจ์๊ฐ ์์ฒญํ ๋งํผ์ ํฌ๊ธฐ ๋น ๊ณต๊ฐ์ ์ฐพ์ผ๋ ค๊ณ ์ด๋ฆฌ์ ๋ฆฌ ์ฐพ์์ผ ํ๋ค.
+
+#### ์คํ ๋ฉ๋ชจ๋ฆฌ vs ํ ๋ฉ๋ชจ๋ฆฌ
+
+| ์คํ ๋ฉ๋ชจ๋ฆฌ | ํ ๋ฉ๋ชจ๋ฆฌ |
+| ------------------------------------- | ----------------------- |
+| ์ ์ ๋ฉ๋ชจ๋ฆฌ | ๋์ ๋ฉ๋ชจ๋ฆฌ |
+| ์คํ์
๊ฐ๋
์ผ๋ก ์ ํํ ๋ช ๋ฐ์ดํธ์ฉ ์ฌ์ฉํด์ผ ํ๋์ง ์ปดํ์ผ ์ ๊ฒฐ์ | ์คํ ์ค์ ํฌ๊ธฐ์ ํ ๋น/ํด์ ์๊ธฐ๊ฐ ๊ฒฐ์ ๋จ |
diff --git "a/developLog/algorithm-datastructure/data-structure/_ \354\236\254\352\267\200\355\225\250\354\210\230_.md" "b/developLog/algorithm-datastructure/data-structure/_ \354\236\254\352\267\200\355\225\250\354\210\230_.md"
new file mode 100644
index 0000000..7698ccb
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ \354\236\254\352\267\200\355\225\250\354\210\230_.md"
@@ -0,0 +1,373 @@
+# ์ฌ๊ทํจ์
+
+## 1. ์ฌ๊ทํจ์
+
+### ๐ ์ฌ๊ทํจ์๋?
+
+* ์๊ธฐ ์์ ์ ๋ค์ ํธ์ถํ๋ ํจ์ : **recursive\_function()**
+* ํน์ ํ ํจ์๊ฐ ์๊ธฐ์์ ์ ํฌํจ
+* **์ฌ๊ทํจ์**๋ ๋ด๋ถ์ ์ผ๋ก ์คํ ์๋ฃ๊ตฌ์กฐ์ ๋์ผ
+
+ โ ์ด์ : ํจ์๋ฅผ ๊ณ์ ํธ์ถ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ํธ์ถํ๊ธฐ ํจ์๊ฐ ๋จผ์ ์ํ์ ๋๋ด์ผ ๊ทธ ์์ ํจ์ ํธ์ถ์ด ์ข
๋ฃ๋๊ธฐ ๋๋ฌธ
+* ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํด์ผ ํ๋ ์๋น์๋ **์ฌ๊ท ํจ์๋ฅผ ์ด์ฉ**ํด์ ๊ฐํธํ๊ฒ ๊ตฌํ ๊ฐ๋ฅ
+
+1. ํ์ด์ฌ ์์
+
+![](https://velog.velcdn.com/images/prettylee620/post/321d34d4-fcd7-4798-a87b-339b7440d1fb/image.png)
+
+* ๋ฌธ์์ด์ด ๋ฌดํํ ์ถ๋ ฅํ๋ค๊ฐ ์ฌ๊ท์ ์ต๋ ๊น์ด ์ด๊ณผ์ ์ค๋ฅ๊ฐ ๋ธ
+
+```python
+def recursive_function(): # def๋ ํจ์๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ์์ฝ์ด
+ print('์ฌ๊ท ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.')
+ recursive_function()
+
+recursive_function()
+```
+
+### ๐ ์์ฐ์(์์ ์ ์)
+
+* 1์ ์์ฐ์
+* ์์ฐ์ n์ ๋ฐ๋ก ๋ค์ ์ ์๋ ์์ฐ์์ด๋ค.
+
+### ๐์ ๋ ฌ์๊ณ ๋ฆฌ์ฆ(๋ณํฉ, ํต ์ ๋ ฌ)
+
+* ์ด์ง๊ฒ์ํธ๋ฆฌ ํ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ ์ด๋ค.
+
+#### ์ ๊ทผ ๋ฐฉ์
+
+1. ํฉํ ๋ฆฌ์ผ ๊ตฌํ๊ธฐ
+
+* ์์ด ์๋ ์ ์์ ํฉํ ๋ฆฌ์ผ๊ฐ
+
+```java
+
+0! = 1
+n>0 ์ด๋ฉด n! = n x (n-1)!
+
+5!
+5x4x3x2x1= 120
+
+int result = 0
+for(int i = 5; i<0;i--){
+result = result * i;
+
+}
+```
+
+#### ์ฌ๊ทํธ์ถ(recursive call)
+
+* ์์ ๊ณผ ๋๊ฐ์ ๊ตฌ์กฐ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ์
+* ๋ฌธ์ ) 0 ์ด์์ ๋์ ์ n, m ์ด ์ฃผ์ด์ก์๋ n ๊ตฌํ์์ค
+
+#### ์ฌ๊ท ์ ๊ทผ
+
+1. ์ํ ์ ์
+
+* ์ฌ๊ท๋ ๋ถ๋ถ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํ์ด ๋ฐฉ๋ฒ
+* ๋ถ๋ถ๋ฌธ์ ๋ ๊ฐ๊ฐ ํ๋์ ๋ช
ํํ ๋ฌธ์ ๋ฅผ ๋ํ๋ด์ด ํ๋์ ๋ต์ ๋ผ ์ ์์ด์ผ ํ๋ค.
+* ๋ต์ ๋ด๋๋ฐ๋ ์
๋ ฅ๋๋ ๋ณ์
+* ์ด๋ ๊ฒ ๋ต์ ๊ฒฐ์ ํ๋ ๋ณ์๋ค์ `์ํ(state)`
+* ํ๋์ ์ํ์ ๋ํ ๋ต์ ์ฐพ๋ ๋ฌธ์
+* 2๊ฐ์ ๋ณ์๊ฐ ์์ผ๋ฏ๋ก, ์ํ(n,m) ์ ์ํ์ฌ ํ๊ธฐ
+
+2. ์ข
๋ฃ ์กฐ๊ฑด
+
+* ๋ถ๋ถ ๋ฌธ์ ๋ค์ ์์ฑํ์ฌ ํด๊ฒฐํด ๋๊ฐ๋ค๊ฐ ์ธ์ ๊ฐ๋ ์ข
๋ฃํด์ผ ํ๋ค.
+* ๋ต์ด ๋์ค๋ ์ํ๋ฅผ ๊ฒ์ฌํ์ฌ ๋ฐํํ ์ ์๋๋ก ์ข
๋ฃ์กฐ๊ฑด
+* n์ 0์ ๊ณฑ์ ๊ตฌํ ๋ (m=0) ๋ต 1
+* 0์ m์ ๊ณฑ ๊ตฌํ ๋(n=0) 1
+* 1์ m์ ๊ณฑ (n= 1) 1
+
+```java
+(n,0) = 1
+(0,m) =1
+(1,m) =1
+(n,m) = n*(n,m-1)
+```
+
+### ๐ ๊ฑฐ๋ญ ์ ๊ณฑ ๊ฐ ๊ตฌํ๊ธฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/8b722d03-c871-4582-9487-7e30d91951bc/image.png)
+
+```java
+import java.util.Scanner;
+
+public class powerEx {
+ private static int power(int n, int m){
+ if (m == 0 ) return 1;
+ if (n == 0) return 1;
+ if (n==0) return 1;
+ return n*power(n, m-1);
+ }
+
+ public static void main(String[] args){
+ Scanner in = new Scanner(System.in);
+ int n = in.nextInt();
+ int m = in.nextInt();
+
+ int result = power(n, m);
+ System.out.printf("%d์ %d ๊ฑฐ๋ญ์ ๊ณฑ ๊ฐ : %d", n, m, result);
+ }
+}
+```
+
+### ๐ ์ต๋ ๊ณต์ฝ์ ๊ตฌํ๊ธฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/8c81b407-4431-4c79-a572-2fab6f6f4d7c/image.png)
+
+```java
+import java.util.Scanner;
+
+public class Gcd {
+
+ private static int gCD(int x, int y){
+ if(y == 0) return x;
+ else return gCD(y, x%y);
+ }
+
+ public static void main(String[] args){
+ Scanner in = new Scanner(System.in);
+ int n = in.nextInt();
+ int m = in.nextInt();
+
+ int result = gCD(n, m);
+ System.out.printf("%d์ %d ์ต๋๊ณต์ฝ์ : %d", n, m, result);
+ }
+}
+```
+
+### ๐ ํ๋
ธ์์ ํ
+
+> ์ธ ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ์ํ๋ค์ด ์ฃผ์ด์ก์ ๋, ํ ๊ธฐ๋ฅ์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ผ๋ก ๋ชจ๋ ์ํ์ ์ฎ๊ธฐ๋ ๋ฌธ์ ์ด๋ฉฐ, ์ํ๋ค์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ, ํฐ ์ํ ์์ ์์ ์ํ์ด ์ฌ๋ผ๊ฐ์ผ ํ๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/85c684c3-b80c-48d8-ad9d-8f87597e512f/image.png)
+
+> ํต์ฌ : ๋ชฉํ๋ ๋ชจ๋ ์ํ์ ๊ธฐ๋ฅ A์์ ๊ธฐ๋ฅ C๋ก ์ฎ๊ธฐ๋ ๊ฒ
+
+1. ๋ฌธ์ : https://school.programmers.co.kr/learn/courses/30/lessons/12946
+2. ๊ท์น
+ 1. ํ ๋ฒ์ ํ ๊ฐ์ ์ํ๋ง ์ด๋ ๊ฐ๋ฅ
+ 2. ํฐ ์ํ ์์ ์์ ์ํ ์ฌ๋ฆด ์ ์์
+ 3. ์ด๋ค ๊ธฐ๋ฅ ์์ ์๋ ์ํ์ ๊ทธ ๊ธฐ๋ฅ์ผ๋ก๋ง ์ด๋์ํฌ ์ ์์
+3. ๋ถ์
+
+> ๊ฒฐ๋ก
+
+* ์ํ์ ๊ฐ์๊ฐ 1๊ฐ์ผ ๊ฒฝ์ฐ : ๋ฐ๋ก ๊ธฐ๋ฅ A์์ ๊ธฐ๋ฅ C๋ก ์ฎ๊ธธ ์ ์๋ค.
+* ์ํ์ ๊ฐ์๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ :
+
+1. ๊ฐ์ฅ ์์ ์ํ์ ์ ์ธํ ๋๋จธ์ง ์ํ๋ค์ ๊ธฐ๋ฅ A์์ ๊ธฐ๋ฅ B๋ก ์ฎ๊ธด๋ค.
+2. ๊ฐ์ฅ ํฐ ์ํ์ ๊ธฐ๋ฅ A์์ ๊ธฐ๋ฅ C๋ก ์ฎ๊ธด๋ค.
+3. ๊ธฐ๋ฅ B์ ์๋ ์ํ๋ค์ ๊ธฐ๋ฅ C๋ก ์ฎ๊ธด๋ค.
+4. ์ํ(๋ณ์)
+
+* ์ฎ๊ธฐ๋ ค๋ ์ํ์ ๊ฐ์ n
+* ์ํ์ด ํ์ฌ ์์นํ๋ ๊ธฐ๋ฅ๊ฐ from
+* ์ํ์ด ์ด๋ํด์ผ ํ๋ ๊ธฐ๋ฅ to(n, from, to)
+* ex. ์ํ n๊ฐ๋ฅผ ๊ธฐ๋ฅ 1์์ ๊ธฐ๋ฅ 3์ผ๋ก ์ฎ๊ฒจ๋ผ! (n, 1, 3)
+ * (n, from, to) โ ์ํ n๊ฐ๋ฅผ ๊ธฐ๋ฅ from์์ ๊ธฐ๋ฅ to ์ฎ๊ธฐ๋ ๊ณผ์
+
+2. ์ข
๋ฃ์กฐ๊ฑด
+
+* ์ํ์ด 1์ผ ๋ ์ข
๋ฃ
+* (1, form, to) = \[from, to] โ ์ํ์ด 1๊ฐ์ผ ๋๋ from์์ to๋ก ์ฎ๊ฒจ๋ผ
+
+3. ์ ํ์
+
+* ์ํ : (n, from, to)
+* ์ข
๋ฃ : (1, from, to)
+* ์ ์ด์ํ : (n-1, from, to)
+
+4 . ์ฝ๋
+
+```java
+import java.util.ArrayList;
+import java.util.List;
+
+class Solution {
+
+private List hanoi(int n, int from, int to){
+ if(n == 1) return List.of(new int[] {from, to}); //์ข
๋ฃ์กฐ๊ฑด n==1 ์ผ๋ from to ์ด๋๋ง ์์ผ๋ผ
+
+ //์ ํ์ ๊ตฌํ
+ int empty = 6 - from - to;
+
+ List result = new ArrayList<>();
+ result.addAll(hanoi(n-1,from,empty));
+ result.addAll(hanoi(1,from,to));
+ result.addAll(hanoi(n-1,empty,to));
+ return result;
+
+ }
+
+
+ public int[][] solution(int n) {
+ return hanoi(n,1,3).toArray(new int[0][]);
+ }
+}
+```
+
+5. ๋ค๋ฅธ ์ฌ๋ ์ฝ๋
+
+```java
+import java.util.Arrays;
+
+class Hanoi {
+ public int[][] hanoi(int n) {
+ // 2์ฐจ์ ๋ฐฐ์ด์ ์์ฑํด ์ฃผ์ธ์.
+ int[][] answer = {{1,3}};
+
+ System.out.println(n);
+
+ return answer;
+ }
+
+ // ์๋๋ ํ
์คํธ๋ก ์ถ๋ ฅํด ๋ณด๊ธฐ ์ํ ์ฝ๋์
๋๋ค.
+ public static void main(String[] args) {
+ Hanoi h = new Hanoi();
+ System.out.println(Arrays.toString(h.hanoi(2)));
+ }
+}
+```
+
+### ๐ ํ๋
ธ์ ์๋ฐ์ ๊ฐ์
+
+* ํ๋
ธ์ด ํ์ ๋์์๋ฆฌ๋ฅผ ์ ์ ์์
+
+![](https://velog.velcdn.com/images/prettylee620/post/76ce5015-3a6c-4c52-a247-a838c7cbf097/image.png)
+
+```java
+// ํ๋
ธ์ด์ ํ
+package recurive;
+import java.util.Scanner;
+
+class Hanoi {
+ //--- no๊ฐ์ ์๋ฐ์ x๋ฒ ๊ธฐ๋ฅ์์ y๋ฒ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊น ---//
+ static void move(int no, int x, int y) {
+ if (no > 1)
+ move(no - 1, x, 6 - x - y);
+
+ System.out.printf("์๋ฐ[%d]๋ฅผ %d๋ฒ ๊ธฐ๋ฅ์์ %d๋ฒ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊น\n", no, x, y);
+
+ if (no > 1)
+ move(no - 1, 6 - x - y, y);
+ }
+
+ public static void main(String[] args) {
+ Scanner stdIn = new Scanner(System.in);
+
+ System.out.println("ํ๋
ธ์ด์ ํ");
+ System.out.print("์๋ฐ์ ๊ฐ์ : ");
+ int n = stdIn.nextInt();
+
+ move(n, 1, 3); // ์ 1 ๊ธฐ๋ฅ์ ์์ธ n๊ฐ๋ฅผ ์ 3 ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊น
+ }
+}
+```
+
+### ๐ ๋ชจ์ ์ฌ์
+
+ํด์ค : https://ksb-dev.tistory.com/273
+
+* A, E, I, O, U ๋ง์ ์ฌ์ฉํ์ฌ 5์๋ฆฌ ์ด๋ด์ ๋ฌธ์๋ฅผ ๋ง๋ค๊ณ , ์ ๋ ฌํ์ฌ ์ฃผ์ด์ง๋ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ์ธ์ง ๋ฐํํด์ผ ํจ
+* ์ฒซ ๋ฒ์งธ ๋จ์ด๋ "A"์ด๊ณ , ๋ ๋ฒ์งธ ๋จ์ด๋ "AA"์ด๋ฉฐ, ๋ง์ง๋ง ๋จ์ด๋ "UUUUU"
+
+1. ๋ฌธ์ : https://school.programmers.co.kr/learn/courses/30/lessons/84512
+2. ๋ถ์
+
+* ์ํ(word) : (word)๋ก ์์๋๋ ๋ชจ๋ ๋จ์ด
+* ์ข
๋ฃ์กฐ๊ฑด : (๊ธธ์ด๊ฐ 5์ธ word) = word
+* ์ ํ์(word) =\[word]+\[word+'A']+\[word+'E']+\[word+'I']+\[word+'O']+\[word+'U']
+* ์ข
๋ฃ์กฐ๊ฑด 5์ผ ๋, ๋ฐ๋ก word ๋ฐํ
+* ๋ถ๋ถ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
+
+```java
+private List generate(String word){
+ //์ข
๋ฃ ์กฐ๊ฑด, ์ ํ์ ๊ตฌํ
+}
+
+// ์ข
๋ฃ์กฐ๊ฑด 5์ผ ๋, ๋ฐ๋ก word ๋ฐํ
+private List generate(String word){
+ //์ข
๋ฃ ์กฐ๊ฑด , ์ ํ์ ๊ตฌํ
+ List wrods = new ArrayList<>();
+ words.add(word);
+ if(word.length() == 5) return words;
+
+ //์ ํ์
+ }
+```
+
+```java
+private List generate(String word){
+ //์ข
๋ฃ ์กฐ๊ฑด , ์ ํ์ ๊ตฌํ
+ List wrods = new ArrayList<>();
+ words.add(word);
+ if(word.length() == 5) return words;
+
+ //์ ํ์ :์ฌ์ฉ๋ ์ ์๋ ๋ชจ๋ ๋ฌธ์๋ฅผ words ๋ถ์ฌ์ผ ํ๋ค.
+ private static fianl char[] CHARS = "AEIOU".toCharArray();
+
+
+ }
+```
+
+3. ์ฝ๋
+
+```java
+import java.util.ArrayList;
+import java.util.List;
+
+class Solution {
+
+ private static final char[] CHARS = "AEIOU".toCharArray();
+
+ private List generate(String word){
+
+ List words = new ArrayList<>();
+ words.add(word);
+ if(word.length() == 5) return words;
+
+ for(char c : CHARS){
+ words.addAll(generate(word + c));
+ }
+ return words;
+}
+
+
+
+
+ public int solution(String word) {
+
+ return generate("").indexOf(word);
+ }
+}
+```
+
+4. ๋ค๋ฅธ ์ฌ๋ ํ์ด
+
+```java
+import java.util.*;
+class Solution {
+ List list = new ArrayList<>();
+ void dfs(String str, int len) {
+ if(len > 5) return;
+ list.add(str);
+ for(int i = 0; i < 5; i++) dfs(str + "AEIOU".charAt(i), len + 1);
+ }
+ public int solution(String word) {
+ dfs("", 0);
+ return list.indexOf(word);
+ }
+}
+```
+
+```java
+class Solution {
+ public int solution(String word) {
+ int answer = 0, per = 3905;
+ for(String s : word.split("")) answer += "AEIOU".indexOf(s) * (per /= 5) + 1;
+ return answer;
+ }
+}
+```
diff --git "a/developLog/algorithm-datastructure/data-structure/_ \355\212\270\353\246\254_.md" "b/developLog/algorithm-datastructure/data-structure/_ \355\212\270\353\246\254_.md"
new file mode 100644
index 0000000..c1c1461
--- /dev/null
+++ "b/developLog/algorithm-datastructure/data-structure/_ \355\212\270\353\246\254_.md"
@@ -0,0 +1,518 @@
+# ํธ๋ฆฌ
+
+* ์ฌ์ง ์ถ์ฒ : [https://laurent.tistory.com/entry/์๋ฃ๊ตฌ์กฐ-ํธ๋ฆฌ-Tree](https://laurent.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%ED%8A%B8%EB%A6%AC-Tree)
+* [https://velog.io/@juwon9733/์ฝ๋ฉ-ํ
์คํธ๋ฅผ-์ํ-ํธ๋ฆฌTree-์๋ฃ๊ตฌ์กฐ-10๋ถ-ํต์ฌ-์์ฝ](https://velog.io/@juwon9733/%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%8A%B8%EB%A6%ACTree-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-10%EB%B6%84-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%95%BD)
+* ๊ฐ์ ์ถ์ฒ : [๋๋น๋](https://www.youtube.com/watch?v=i5yHkP1jQmo\&t=3s)
+* ๊ฐ์ ์ถ์ฒ : [์ฌ์ด ์ฝ๋](https://www.youtube.com/watch?v=ohrwGtqeW-I\&list=PLcXyemr8ZeoT-\_8yBc\_p\_lVwRRqUaN8ET\&index=29)
+
+![](https://velog.velcdn.com/images/prettylee620/post/45561eed-be30-4c6a-8ab4-dd2ec6cb56b7/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/f8b3e83b-bd36-4aef-9009-0e61d771d644/image.png)
+
+## 1. ํธ๋ฆฌ
+
+> ํธ๋ฆฌ๋ฅผ ์ด์ฉํด ์ง์ ๊ตฌํํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ง๋ง ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌธ์๋ฅผ ์ดํดํ ๋ ์ข๋ค
+
+### ๐ ํธ๋ฆฌ๋?
+
+* ๊ทธ๋ํ ์ค ํ๋๋ก ๊ทธ๋ํ์ ํน์ง์ฒ๋ผ ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ฐฐ์ด๋ ์ผ์ข
์ `๊ณ์ธต์ ๋ฐ์ดํฐ์ ์งํฉ`
+* ํธ๋ฆฌ๋ก ์ด๋ฃจ์ด์ง ์งํฉ์ ์ฒ์ด๋ผ๊ณ ํจ
+* ๋ฟ๋ฆฌ๊ฐ ์ต์์๋ก ์ฌ๋ผ๊ฐ
+* ๊ฐ๊ณ๋์ ๊ฐ์ โ ๋จ๊ตฐ ํ ์๋ฒ์ง๊ฐ A๊ฐ์ ๋๋
+
+### ๐ ํธ๋ฆฌ์ ํน์ง
+
+1. ๋ถ๋ชจ, ์์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
+2. ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅํ์ง ์๋ **๋น์ ํ ๊ตฌ์กฐ**
+3. ํธ๋ฆฌ์ ์๋ธํธ๋ฆฌ๊ฐ ์๋ **์ฌ๊ท์ ๊ตฌ์กฐ**
+4. V-1 = E๋ผ๋ ํน์ง์ ๊ฐ์ง๋ค. ๊ฐ์ ์= ๋
ธ๋์ -1
+5. ์์์ ๋ ๋
ธ๋ ์ฌ์ด ๊ฒฝ๋ก๋ ์ ์ผ๋ฌด์ดํ๊ฒ ์กด์ฌํ๋ค.
+6. `๋ฃจํธ ๋
ธ๋`๋ ํ๋๋ง ์กด์ฌํ๋ค.
+7. ์ฌ์ดํด(cycle)์ด ์กด์ฌํ์ง ์์
+
+![](https://velog.velcdn.com/images/prettylee620/post/136c709a-6b6c-4d5d-8912-81a7299f90ec/image.png) 8. ์๋
๋
ธ๋๋ ํ๋์ ๋ถ๋ชจ ๋
ธ๋๋ง ์กด์ฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/ebb5a99f-0c89-4db9-96e7-a00fcbbefcb9/image.png)
+
+### ๐ ํธ๋ฆฌ์ ์ฉ์ด
+
+![](https://velog.velcdn.com/images/prettylee620/post/9f97ebc1-ec9f-44c4-be30-535be0b02e84/image.png)
+
+1. **๋ฃจํธ ๋
ธ๋(Root Node)**
+ 1. ํธ๋ฆฌ์์ ๋ถ๋ชจ๊ฐ ์๋ ์ต์์ ๋
ธ๋, ํธ๋ฆฌ์ ์์์
+ 2. 2
+2. **๋จ๋ง ๋
ธ๋(Termial Node) = ์ธ๋ถ ๋
ธ๋(external) ๋
ธ๋**
+ 1. ์์์ด ์๋ ๋
ธ๋, ํธ๋ฆฌ์ ๊ฐ์ฅ ๋ง๋จ์ ์์น, degree๊ฐ 0
+ 2. 3, 7, 8, 1, 4
+ 3. leaf node, outer node, terminal node
+3. **๋ ๋ฒจ(Level)**
+ 1. ๋
ธ๋์ ๋ฃจํธ ๋
ธ๋ ๊ฒฝ๋ก์์ ๊ฐ์ ์ ์
+ 2. ๋ฃจํธ ๋
ธ๋์ ๋ ๋ฒจ์ 0 (or 1)
+4. **์กฐ์ ๋
ธ๋(Ancestor Node)** : ๋ถ๋ชจ ๋
ธ๋๋ฅผ ๋ฐ๋ผ ๋ฃจํธ ๋
ธํธ๊น์ง ์ฌ๋ผ๊ฐ๋ฉฐ ๋ง๋๋ ๋ชจ๋ ๋
ธ๋
+ 1. 8์ ์กฐ์ ๋
ธ๋ : 11, 9, 2
+5. **์์ ๋
ธ๋(descendant Node)** : ์๋
๋
ธ๋๋ฅผ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๋ฉฐ ๋ง๋ ์ ์๋ ๋ชจ๋ ๋
ธ๋
+ 1. 9์ ์์ ๋
ธ๋ : 11, 8, 1, 4
+6. **์์ ๋
ธ๋(Child Node)** : ํน์ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋ค์ ๋ ๋ฒจ์ ๋
ธ๋
+ 1. 5๋ฒ ๋
ธ๋์ ์์ ๋
ธ๋๋ 6, 7
+ 2. 6๋ฒ ๋
ธ๋์ ์์ ๋
ธ๋๋ 3
+7. **๋ถ๋ชจ ๋
ธ๋(Parent Node)** : ์๋
๋
ธ๋๋ฅผ ๊ฐ์ง๋ ๋
ธ๋
+ 1. 2, 5, 9, 6, 11
+8. **ํ์ ๋
ธ๋(Sibling)** : ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง ๋
ธ๋
+ 1. {8, 1, 4}, {6, 7}, {5, 9}
+9. **๋ด๋ถ ๋
ธ๋(internal) =branch node = inner node** : ์๋
๋
ธ๋๋ฅผ ๊ฐ์ง๋ ๋
ธ๋
+ 1. 2, 5, 9, 6, 11
+10. `๋
ธ๋`์ ๊น์ด(Depth)
+ 1. **๋ฃจํธ ๋
ธ๋**์์ ํด๋น ๋
ธ๋์ ๋๋ฌํ๊ธฐ ์ํ ๊ฐ์ ์ ์
+ 2. 11์ ๊น์ด : 2
+ 3. ๋ฃจํธ ๋
ธ๋์ ๊น์ด : 0
+11. `ํธ๋ฆฌ`์ ๊น์ด(depth)
+ 1. ํธ๋ฆฌ์ ์๋ ๋
ธ๋๋ค์ ๊น์ด ์ค ๊ฐ์ฅ ๊ธด ๊น์ด
+ 2. ํธ๋ฆฌ ๊น์ด : 3
+ 3. ํธ๋ฆฌ ๋์ด = ํธ๋ฆฌ ๊น์ด
+12. **๊ฒฝ๋ก(path)**
+ 1. ํ ๋
ธ๋์์ ๋ค๋ฅธ ๋
ธ๋ ์ฌ์ด์ ๋
ธ๋๋ค์ ์ํธ์ค(sequence)
+ 2. 2์์ 7๋ก์ ๊ฒฝ๋ก : 2- 5 -7
+ 3. **๊ฒฝ๋ก ๊ธธ์ด(length of path)**
+ 4. ๊ฒฝ๋ก์ ์๋ ๋
ธ๋๋ค์ ์
+ 5. 2์์ 7๋ก์ ๊ฒฝ๋ก ๊ธธ์ด : 3
+ 6. 2์์ 3์ผ๋ก์ ๊ฒฝ๋ก ๊ธธ์ด : 4
+13. **`๋
ธ๋`์ ๋์ด(height) : ๋ฌธ์๋ง๋ค ๋์ด๋ฅผ ๊ฐ์ ์ผ๋ก ๋ฐ์ง๊ธฐ๋ ํ๊ณ ๋
ธ๋ ์๋ก ๋ฐ์ง๊ธฐ๋**
+ 1. ๋
ธ๋์์ ๋ฆฌํ(leaf) ๋
ธ๋๊น์ง์ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก์ ๊ฐ์ (edge) ์
+ 2. 5์ ๋์ด : 2
+ 3. ๋ฆฌํ(left) ๋
ธ๋์ ๋์ด : 0
+14. `ํธ๋ฆฌ`์ ๋์ด
+ 1. ๋ฃจํธ ๋
ธ๋์ ๋์ด
+ 2. ํธ๋ฆฌ ๋์ด : 3
+15. **์ฐจ์(Degree)**
+ 1. ํน์ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ์์ ๋
ธ๋์ ์
+ 2. ์ฐจ์๋ฅผ ๊ณ ๋ฅด๋ผ๋๋ฐ **ํน์ ๋
ธ๋ ์ธ๊ธ x => ๊ฐ์ฅ ํฐ ์ฐจ์๋ฅผ ๊ฐ์ง๋ ๊ฐ**์ ๊ณ ๋ฅด๋ฉด ๋จ = ํธ๋ฆฌ์ ์ฐจ์(degree)
+ 3. 11์ ์ฐจ์ : 3
+ 4. 3์ ์ฐจ์ : 0
+16. **`๋
ธ๋`์ ํฌ๊ธฐ(size)**
+ 1. ์์ ์ ํฌํจํ ์์ ๋
ธ๋์ ์
+ 2. 9์ ํฌ๊ธฐ : 5
+ 3. 5์ ํฌ๊ธฐ : 4
+17. `ํธ๋ฆฌ`์ ํฌ๊ธฐ(size)
+ 1. ํธ๋ฆฌ์ ๋ชจ๋ ๋
ธ๋์ ์
+ 2. ํธ๋ฆฌ์ ํฌ๊ธฐ : 10
+18. **๋ ๋
ธ๋ ์ฌ์ด์ ๊ฑฐ๋ฆฌ(distance)**
+ 1. ๋ ๋
ธ๋์ **์ต๋จ ๊ฒฝ๋ก**์ ๊ฐ์ ์
+ 2. distance(9, 8) : 2
+ 3. distance(3, 8) : 6
+19. width ![](https://velog.velcdn.com/images/prettylee620/post/5a93d73a-d1d8-4e39-a1d7-bb81a39897c9/image.png)
+
+* ์์์ ๋ ๋ฒจ์์ ๋
ธ๋์ ์
+* level 2์ width : 3
+
+20. ์๋ธ ํธ๋ฆฌ(subtree) : ๊ฐ ๋
ธ๋์ ์๋
๋
ธ๋๋ค์ ์ฌ๊ท์ ์ผ๋ก ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/85a852de-de64-4032-9426-19ce12c6fac9/image.png)
+
+### ๐ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ณณ\[chat gpt]
+
+> ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์งํํ์ฌ ์ฌ์ฉ๋๋ ์ค์ํ ์๋ฃ๊ตฌ์กฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/1210dde4-6696-4e55-8252-4053c709832d/image.png)
+
+## 2. ์ด์ง ํธ๋ฆฌ
+
+### ๐ ์ด์ง ํธ๋ฆฌ(Binary Tree)
+
+* ๊ฐ ๋
ธ๋์ ์๋
๋
ธ๋ ์ ์ต๋ 2๊ฐ์ธ Tree๋ฅผ ์๋ฏธ
+* left child | right child = ์ผ์ชฝ ์๋
๋
ธ๋ | ์ค๋ฅธ์ชฝ ์๋
๋
ธ๋
+
+### ๐ ์ด์ง ํธ๋ฆฌ(Binary Tree) ์ข
๋ฅ
+
+![](https://velog.velcdn.com/images/prettylee620/post/699d8990-2b5c-4a07-8177-d30568ec955c/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/330a7383-88a7-4a0e-a331-4902e5f3b9ae/image.png)
+
+1. **full binary tree(์ ์ด์ง ํธ๋ฆฌ)** : ๋ชจ๋ ๋
ธ๋๋ ์๋
๋
ธ๋๊ฐ `์๊ฑฐ๋ ๋ ๊ฐ`์ธ ํธ๋ฆฌ = ์๋
๋
ธ๋๊ฐ 1๊ฐ์ธ ๋
ธ๋๋ ์๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/24d2cc5a-7e94-444e-8d6a-3f8df64c8cb5/image.png)
+
+2. **complete binary tree(์์ ์ด์ง ํธ๋ฆฌ)** : ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ **๋ชจ๋ ๋ ๋ฒจ์์ ๋
ธ๋๊ฐ ๋น ์ง์์ด ์ฑ์์ ธ ์๊ณ ** ๋ง์ง๋ง ๋ ๋ฒจ์ **์ผ์ชฝ๋ถํฐ ๋น ์ง์์ด ๋
ธ๋๊ฐ ์ฑ์์ ธ ์๋** ํธ๋ฆฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/2065e97f-fea8-4e24-a2fa-be87c323e810/image.png)
+
+3. **perfect binary tree(ํฌํ ์ด์ง ํธ๋ฆฌ)** : ๋ชจ๋ ๋ ๋ฒจ์์ ๋
ธ๋๊ฐ ๋น ์ง์์ด ์ฑ์์ ธ ์๋ ํธ๋ฆฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/f2c1bfa3-9616-47ac-9f3e-0e3d35f332aa/image.png)
+
+4. **degenerate binary tree(๋ณ์ง ์ด์ง ํธ๋ฆฌ)** : ๋ชจ๋ ๋ถ๋ชจ ๋
ธ๋๋ ํ๋์ ์๋
๋
ธ๋๋ง์ ๊ฐ์ง
+
+* pathological binary tree๋ผ๊ณ ๋ ๋ถ๋ฆผ
+* left skewed binary tree : ๋ชจ๋ ๋ถ๋ชจ ๋
ธ๋๋ `์ผ์ชฝ` ์๋
๋
ธ๋๋ง ๊ฐ์ง๋ ํธ๋ฆฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/5ff4e697-b5c4-4aeb-b33e-e6d45cdd36a0/image.png)
+
+* right skewed binary tree : ๋ชจ๋ ๋ถ๋ชจ ๋
ธ๋๋ ์ค๋ฅธ`์ชฝ` ์๋
๋
ธ๋๋ง ๊ฐ์ง๋ ํธ๋ฆฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/960f9d4a-b8c4-4b53-992e-a6ebed36f538/image.png)
+
+5. balanced binary tree(๊ท ํ ์ด์ง ํธ๋ฆฌ) : ๋ชจ๋ ๋
ธ๋์์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋์ด ์ฐจ์ด๊ฐ ์ต๋ 1์ธ ํธ๋ฆฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/6da19ea3-78cb-4370-b0ba-612acf4c9bd3/image.png)
+
+6. **ํฌํ ์ด์ง ํธ๋ฆฌ** : ๋ชจ๋ ์์ ๋ ๋ฒจ์ด ๋์ผํ ์ด์ง ํธ๋ฆฌ์ด๋ฉฐ, ์์ด ์๋ ๋ด๋ถ ๋
ธ๋๋ค์ ๋ชจ๋ 2๊ฐ์ ์์์ ๊ฐ์ง๋ ํธ๋ฆฌ
+ * `๋ด๋ถ ๋
ธ๋` : ๋ฃจํธ ๋
ธ๋์ ๋ฆฌํ ๋
ธ๋(leaf node)๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋
ธ๋๋ฅผ ์๋ฏธ
+ * ์ : ์์์ด ์๋ ๋
ธ๋
+
+### ๐ ์ด์ง ํธ๋ฆฌ ์ฅ์
+
+1. ์ฝ์
์ญ์ ๊ฐ ์ ์ฐํ๋ค
+2. ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ข์ฐ ์๋ธํธ๋ฆฌ๊ฐ ๋๋ ์ง๊ธฐ ๋๋ฌธ์ ์ฝ์
/์ญ์ /๊ฒ์์ด ๋ณดํต์ ๋น ๋ฅด๋ค
+3. ๊ฐ์ ์์๋๋ก ์ํ๊ฐ๋ฅ
+
+### ๐ ์ด์ง ํธ๋ฆฌ ๋จ์
+
+* ์ต์
์ ๊ฒฝ์ฐ ๋ชจ๋ ํธ๋ฆฌ์ ์๋ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธ ํด์ค์ผ ํจ
+* ํธ๋ฆฌ๊ฐ ๊ตฌ์กฐ์ ์ผ๋ก ํ์ชฝ์ผ๋ก ํธํฅ๋๋ฉด ์ฝ์
, ์ญ์ , ๊ฒ์ ๋ฑ๋ฑ ์ฌ๋ฌ ๋์๋ค์ ์ํ์๊ฐ ์
ํ
+* ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด **์ค์ค๋ก ๊ท ํ์ ์ก๋ ์ด์ง ํ์ ํธ๋ฆฌ**๊ฐ ์ฌ์ฉ
+ * AVL ํธ๋ฆฌ. Red-Black ํธ๋ฆฌ
+
+### ๐ ๊ด๋ จ ์ฝํ
๋ฌธ์
+
+#### ์์ : ๊ธธ์ฐพ๊ธฐ ๋ฌธ์
+
+1. ๋ฌธ์ ๋งํฌ : https://school.programmers.co.kr/learn/courses/30/lessons/42892
+2. ๋ค๋ฅธ ์ฌ๋ ํ์ด : https://choichumji.tistory.com/167
+3. ๊ฐ์ฌ๋์ ์ฝ๋์ ์ค๋ช
๋ง๋ถํ
+ 1. **`preorder.stream().mapToInt(Integer::intValue).toArray()`**
+ 2. **`preorder`** ๋ฆฌ์คํธ๋ฅผ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๊ณ , ๊ฐ ์์๋ฅผ **`mapToInt()`** ๋ฉ์๋๋ฅผ ์ด์ฉํด **`int`** ํ์ผ๋ก ๋ณํ
+ 3. \*\*mapToInt(Integer::intValue)\*\*๋ ๊ฐ ์์๋ฅผ **int**๋ก ๋ณํํ๋ ๋ฉ์๋ ์ฐธ
+ 4. \*\*`Integer::intValue`\*\*๋ **Integer** ํด๋์ค์ **intValue** ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ **int**๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธ
+ 5. **`toArray()`** ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์คํธ๋ฆผ์ ์์๋ค์ ๋ฐฐ์ด๋ก ๋ณํ
+
+```java
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class Solution {
+ //์ด์ง ํธ๋ฆฌ ๋
ธ๋(value : ๋
ธ๋ ์ซ์ x,y : ๋
ธ๋ ์์น - ์ขํ )
+ // left, right : ๊ฐ๊ฐ ์ผ์ชฝ ์์์ธ์ง ์ค๋ฅธ์ชฝ ์์์ธ์ง ๊ตฌ๋ถ
+ private static class Node{
+ public final int value;
+ public final int x;
+ public final int y;
+
+ public Node left;
+ public Node right;
+
+ private Node(int value, int x, int y){
+ this.value = value;
+ this.x = x;
+ this.y = y;
+ }
+ }
+
+ // ๋
ธ๋๋ฅผ ์ฝ์
ํ๋ ๋ฉ์๋, ์ฃผ์ด์ง ๋
ธ๋๋ฅผ ํ์ฌ ๋
ธ๋์ ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ์ ์ฝ์
+ // ์์น ์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ตํ์ฌ ์ ์ ํ ์์น์ ๋
ธ๋๋ฅผ ์ฝ์
+ private void insert(Node root, Node node){
+ if(node.x < root.x) {
+ if (root.left == null) {
+ root.left = node;
+ } else {
+ insert(root.left, node);
+ }
+ }
+ else{
+ if(root.right == null){
+ root.right = node;
+ }
+ else{
+ insert(root, node);
+ }
+ }
+ }
+
+ //๋
ธ๋ ๋ฐฐ์ด์ ๋ฐ์ ์ด์ง ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฉ์๋
+ // ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๋
ธ๋๋ฅผ ๋ฃจํธ๋ก ์ง์ ํ๊ณ , ๋๋จธ์ง ๋
ธ๋๋ค์ insert ๋ฉ์๋๋ฅผ ํตํด ์ ์ ํ ์์น์ ์ฝ์
ํ์ฌ ์ ์ฒด ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑ
+ private Node constructTree(Node[] nodes){
+ Node root = nodes[0];
+ for(int i = 1; i visits){
+ if(node == null) return;
+ visits.add(node.value); // ํ์ฌ ๋
ธ๋ ๊ฐ์ ๋ฐฉ๋ฌธ ๋ฆฌ์คํธ์ ์ถ๊ฐ
+ pre(node.left, visits); // ์ผ์ชฝ ์์ ๋
ธ๋๋ฅผ ์ ์ ์ํ
+ pre(node.right, visits); // ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋๋ฅผ ์ ์ ์ํ
+ }
+
+ // ํ์ ์ํ
+ // ๋
ธ๋์ ์ผ์ชฝ ์์ ๋
ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ํํ ํ, ํ์ฌ ๋
ธ๋์ ๊ฐ์ ๋ฆฌ์คํธ์ ์ถ๊ฐ
+ private void post(Node node, List visits){
+ if(node == null) return;
+ // ๋๋ถํฐ ํ
+ post(node.left, visits);
+ post(node.right, visits);
+ // ๋ง์ง๋ง์ ๋ฃ์ด์ค
+ visits.add(node.value);
+ }
+
+ public int[][] solution(int[][] nodeinfo)
+ {
+ Node[] nodes = new Node[nodeinfo.length];
+ for (int i = 0; i < nodes.length; i++)
+ {
+ // ๊ฐ ์ธ๋ฑ์ค์ ๋
ธ๋ ์ ๋ณด ์ ์ฅ, i + 1์ ๋
ธ๋์ ๊ฐ์ ์๋ฏธํ๋ฉฐ, nodeinfo[i][0]์ x ์ขํ, nodeinfo[i][1]์ y ์ขํ๋ฅผ ๋ํ๋ธ๋ค
+ nodes[i] = new Node(i + 1, nodeinfo[i][0], nodeinfo[i][1]);
+ }
+
+ Arrays.sort(nodes, (a, b) -> b.y - a.y); // ์๋ถ๋ถ๋ถํฐ ์ํํ๊ธฐ ์ํด์ y์ขํ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
+ // ๋
ธ๋ ์ ๋ณด๋ค์ด ์ ๋ ฌ๋์์ผ๋ฏ๋ก, ๋ฐฐ์ด์ ์ฒซ ๋
ธ๋๋ถํฐ ์ํํ๋ฉฐ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ค.
+
+ Node root = constructTree(nodes); // ์ด์ง ํธ๋ฆฌ ์์ฑ
+
+ List preorder = new ArrayList<>();
+ pre(root,preorder);
+
+ List postorder = new ArrayList<>();
+ post(root,preorder);
+
+ // preorder์ postorder ๋ฆฌ์คํธ์ ์์๋ค์ ๊ฐ๊ฐ int ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ์ต์ข
์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
+ return new int[][] {
+ preorder.stream().mapToInt(Integer::intValue).toArray(),
+ postorder.stream().mapToInt(Integer::intValue).toArray(),
+ };
+
+ }
+}
+```
+
+## 3. ์ด์ง ํ์ ํธ๋ฆฌ
+
+### ๐ ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)
+
+![](https://velog.velcdn.com/images/prettylee620/post/901016e1-9d1c-4488-9443-8335ce6e3762/image.png)
+
+* ์ด์ง `ํ์`์ด ๋์ํ ์ ์๋๋ก ๊ณ ์๋ ํจ์จ์ ์ธ ํ์์ด ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข
+* ์ด์ง ํ์ ํธ๋ฆฌ์ ํน์ง : ์ผ์ชฝ ์์ ๋
ธ๋ < ๋ถ๋ชจ ๋
ธ๋ < ์ค์ชฝ ์์ ๋
ธ๋
+ * ๋ถ๋ชจ ๋
ธ๋๋ณด๋ค ์ผ์ชฝ ๋
ธ๋๊ฐ ์๋ค.
+ * ๋ถ๋ชจ ๋
ธ๋๋ณด๋ค ์ค๋ฅธ์ชฝ ๋
ธ๋๊ฐ ํฌ๋ค
+ * ์ฆ, ๋ชจ๋ ๋
ธ๋์ **์ผ์ชฝ ์๋ธ ํธ๋ฆฌ**๋ ํด๋น ๋
ธ๋์ ๊ฐ๋ณด๋ค **์์ ๊ฐ๋ค๋ง** ๊ฐ์ง๊ณ ๋ชจ๋ ๋
ธ๋์ **์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ**๋ ํด๋น ๋
ธ๋์ ๊ฐ๋ณด๋ค **ํฐ ๊ฐ๋ค๋ง** ๊ฐ์ง๋ค.
+* ํ์ ๋ฒ์๊ฐ ์ด์์ ์ธ ๊ฒฝ์ฐ ์ ๋ฐ ๊ฐ๊น์ด ์ค์ด๋ ๋ค.
+* ํ์ง๋ง ๋ฐ๋๋ก ๊ท ํ์ด ๋ง์ง ์์ผ๋ฉด ๊ฒ์ ํจ์จ์ด ์ข์ง ์๋ค.
+
+#### ์ด์ง ํ์ ํธ๋ฆฌ์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ
+
+* ์ต์๊ฐ : ํธ๋ฆฌ์ ๊ฐ์ฅ ์ผ์ชฝ์ ์กด์ฌ
+* ์ต๋๊ฐ : ํธ๋ฆฌ์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์กด์ฌ
+
+### ๐ ํธ๋ฆฌ ์ํ(Tree Traversal)
+
+* ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ํฌํจ๋ ๋
ธ๋๋ฅผ ํน์ ํ ๋ฐฉ๋ฒ์ผ๋ก ํ ๋ฒ ์ฉ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธ
+ * ํธ๋ฆฌ์ ์ ๋ณด๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธ ๊ฐ๋ฅ
+
+#### ๋ํ์ ์ธ ํธ๋ฆฌ ์ํ
+
+1. **์ ์ ์ํ(Pre-Order Traversal)**
+
+![](https://velog.velcdn.com/images/prettylee620/post/fd25a405-82dd-4307-90f6-f249d1a7629a/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/52075908-495f-41f9-9d08-ec7abf0a2e63/image.png)
+
+* Root โ Left โ Right ์์ผ๋ก ๋ฐฉ๋ฌธ
+* ๋ฃจํธ๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธ
+
+```java
+// ์ ์ ์ํ
+ private void pre(Node node, List visits){
+ if(node == null) return;
+ visits.add(node.value);
+ pre(node.left, visits);
+ pre(node.right, visits);
+ }
+```
+
+2. **์ค์ ์ํ(In-Order traversal)**
+
+![](https://velog.velcdn.com/images/prettylee620/post/e94899a8-6f69-466c-987b-0a234c8d7955/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/e34cd51a-f5bf-429f-b20b-b45f363ca96f/image.png)
+
+โ ์์๊ฐ ๊ธฐ์ค์ผ๋ก ์์๋๋ก ๋ฐฉ๋ฌธ
+
+> ์ฌ๊ท์ ์ผ๋ก ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ ์ํ โ ํ์ฌ ๋
ธ๋ ๋ฐฉ๋ฌธ(๊ฐ ์ถ๋ ฅ) โ ์ฌ๊ท์ ์ผ๋ก ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ ์ํ
+
+![](https://velog.velcdn.com/images/prettylee620/post/66eb3f4d-0a62-43f4-9132-3f15e2d6298a/image.png)
+
+* left โ Root โ Right ์์ผ๋ก ๋ฐฉ๋ฌธ
+* ์ฌ๊ท์ ์ผ๋ก ์ผ์ชฝ ์์์ ๋จผ์ ๋ฐฉ๋ฌธ ํ ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธ
+
+3. **ํ์ ์ํ(Post-Order)**
+
+![](https://velog.velcdn.com/images/prettylee620/post/f87996f2-962f-4af1-9a09-36578cfc210f/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/dbad292e-7c7d-4e45-9de4-436d541381c9/image.png)
+
+* left โ right โ root ์์ผ๋ก ๋ฐฉ๋ฌธ
+* ์ค๋ฅธ์ชฝ ์์์ ๋ฐฉ๋ฌธ ํ ๋ฃจํธ ๋ฐฉ๋ฌธ
+
+```java
+// ํ์ ์ํ
+ private void post(Node node, List visits){
+ if(node == null) return;
+ // ๋๋ถํฐ ํ
+ post(node.left, visits);
+ post(node.right, visits);
+ // ๋ง์ง๋ง์ ๋ฃ์ด์ค
+ visits.add(node.value);
+ }
+```
+
+#### ๋น๊ต
+
+![](https://velog.velcdn.com/images/prettylee620/post/03320c5a-97bf-4db8-ab17-f0dc9d3050a3/image.png)
+
+### ๐ ๋
ธ๋์ successor(ํ์์)
+
+![](https://velog.velcdn.com/images/prettylee620/post/bb9d07a1-fdb7-47db-af0a-f3ecbb5b41e8/image.png)
+
+* ํด๋น ๋
ธ๋๋ณด๋ค ๊ฐ์ด **ํฐ ๋
ธ๋๋ค ์ค์์ ๊ฐ์ฅ ๊ฐ์ด ์์ ๋
ธ๋**
+* 20์ successor : 30
+* 17์ sucessor : 20
+* 10์ sucessor : 15
+
+### ๐ ๋
ธ๋์ predecessor(์ ์์)
+
+* ํด๋น ๋
ธ๋๋ณด๋ค ๊ฐ์ด **์์ ๋
ธ๋๋ค ์ค์์ ๊ฐ์ฅ ๊ฐ์ด ํฐ ๋
ธ๋**
+* 20์ predecessor : 17
+* 10์ predecessor : 5
+* 40์ predecessor : 30
+
+### ๐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ณผ์
+
+1. ๋ฃจํธ ๋
ธ๋ : 50
+2. ๋ง์ฝ 70์ ๋ฃ๋๋ค๊ณ ํ๋ฉด ๋ฃจํธ ๋
ธ๋๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝ์ ์ง์ด ๋ฃ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/a2495e35-5c0b-4d6b-8137-2a54fb9d9a10/image.png)
+
+3. ๋ง์ฝ 90์ ๋ฃ์ผ๋ฉด 70๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝ์ ์ง์ด๋ฃ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/343ae6ea-d73e-40e8-8eab-4c731066d067/image.png)
+
+4. 99์ ๋ฃ์ผ๋ฉด 50์ด๋ ๋น๊ต ํ ํฌ๋๊น ์ค๋ฅธ์ชฝ โ 70์ด๋ ๋น๊ต ํ ํฌ๋๊น ์ค๋ฅธ์ชฝ โ 90์ด๋ ๋น๊ต ํ ํฌ๋๊น ์ค๋ฅธ์ชฝ์ ๋ฃ์ 99
+
+![](https://velog.velcdn.com/images/prettylee620/post/cbdf6bf4-9696-4fe8-944f-20939644961b/image.png)
+
+5. 80์ ์ฝ์
ํ๋ฉด 1) 50๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ 2) 70๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ 3) 90๋ณด๋ค ์์ผ๋๊น ์ผ์ชฝ์ ์ต์ข
์ฝ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/87f8d08f-b77c-4b03-bfdf-b3031c4c98a5/image.png)
+
+6. ์ด๋ฐ ๊ณผ์ ์ ๋ฐ๋ณต โ ์ต์ข
์ด์ง ํธ๋ฆฌ
+
+![](https://velog.velcdn.com/images/prettylee620/post/424db681-f5b1-40e6-9cdc-491adc814748/image.png)
+
+### ๐ ์ด์งํธ๋ฆฌ ์ญ์ (delete)
+
+#### ๊ณผ์
+
+1. ์ญ์ ํ๋ ค๋ ๋
ธ๋๊ฐ ์๋์ง `๊ฒ์`
+2. ์์ผ๋ฉด ์ญ์
+3. 20์ ์ญ์ ํ๋ ค๋ฉด 1) 50๋ณด๋ค ์์ผ๋ ์ผ์ชฝ โ 2) 30๋ณด๋ค ์์ผ๋ ์ผ์ชฝ โ 20 ๋ฐ๊ฒฌ โ ์ญ์ ํ ๊ฐ์ด null์ด ๋จ
+
+![](https://velog.velcdn.com/images/prettylee620/post/223684da-c16a-4b49-a854-356c51323709/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/13d78203-5211-4eaa-b06c-cb5aa044eba3/image.png)
+
+4. 30์ ์ง์ฐ๋ คํจ โ **๊ทผ๋ฐ ์๋
์ธ 40์ด ์์**
+ 1. ์ฆ, 30์ ๋ถ๋ชจ์ธ 50์ด 40์ ๊ฐ๋ฅดํค๊ฒ ๋ฐ๊ฟ
+
+![](https://velog.velcdn.com/images/prettylee620/post/971f4b76-1606-4ab7-bdd8-3784b3697b59/image.png)
+
+5. 50์ ์ง์ฐ๋ ค๊ณ ํจ โ ๊ทผ๋ฐ ์๋
๊ฐ ๋
+ 1. ๋ ์ค ํ๋์ ์๋ธํธ๋ฆฌ์์ ์ค๋ฅธ์ชฝ์ **๊ฐ์ฅ ์์ ๊ฐ์ ์**๋ก ์ฌ๋ฆผ
+ 2. ์ผ์ชฝ์ ๊ฒฝ์ฐ์๋ **๊ฐ์ฅ ํฐ ๊ฐ์ ์๋ก** ์ฌ๋ฆผ
+
+![](https://velog.velcdn.com/images/prettylee620/post/b0ae2ee3-b704-4386-bba8-1ae9e08a23a2/image.png)
+
+#### ์๋
๊ฐ `์๋` ๋
ธ๋ ์ญ์ (delete)
+
+* ์ญ์ ๋ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด ์๋๋ก ์ฒ๋ฆฌ โ `null`
+
+#### ์๋
๊ฐ `ํ๋`์ธ ๋
ธ๋ ์ญ์ (delete)
+
+* ์ญ์ ๋ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ํผ๋ฐ์ค๋ฅผ ์ญ์ ๋ ๋
ธ๋์ ์๋
๋ฅผ ๊ฐ๋ฅดํค๊ฒ ๋ณ๊ฒฝ
+
+#### ์๋
๊ฐ `๋`์ธ ๋
ธ๋ ์ญ์ (delete)
+
+* ์ญ์ ๋ ๋
ธ๋์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์ ์ ์ผ **๊ฐ์ด ์์** ๋
ธ๋๊ฐ ์ญ์ ๋ ๋
ธ๋ ๋์ฒด
+
+### ๐ ๋ฐ์ดํฐ ์ถ๊ฐ
+
+1. ํ์ฌ ํธ๋ฆฌ์ ์ํ
+
+![](https://velog.velcdn.com/images/prettylee620/post/3b97ca31-23bf-4d04-87d1-0ced6a1dc861/image.png)
+
+2. ์ฝ์
์ด๋ ๋น์ทํจ ๋น๊ตํด์ ๋ฃ๊ธฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/a868dc23-f3c5-4a4e-b7ac-2cc5bb070aff/image.png)
+
+3. ์ฌ๊ธฐ์ ๋ ๋ฃจํธ ๋
ธ๋ ์ญ์ ๋๋ฉด
+ 1. ์ค๋ฅธ์ชฝ์์ 1) ๊ฐ์ฅ ์์ ๊ฐ์ธ 80์ด ์๋ก ์ฌ๋ผ๊ฐ๊ณ 2) 80์ ์๋
์ธ 85๋ 80์ ๋ถ๋ชจ์๋ 90์ด ๊ฐ๋ฅดํค๊ฒ ๋จ
+
+![](https://velog.velcdn.com/images/prettylee620/post/f9d60959-7eef-4584-9847-28989f03ecdb/image.png)
+
+### ๐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ณผ์
+
+> ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ์ด๋ฏธ ๊ตฌ์ฑ๋์ด ์๋ค๊ณ ๊ฐ์ , ์ฐพ๊ณ ์ ํ๋ ์์ : 37
+
+![](https://velog.velcdn.com/images/prettylee620/post/7d818bf4-de18-4aa5-848c-1ea6a57b3fa9/image.png)
+
+1. ๋ฃจํธ ๋
ธ๋๋ถํฐ ๋ฐฉ๋ฌธํ์ฌ ํ์์ ์งํ
+ 1. ํ์ฌ ๋
ธ๋์ ์ฐพ๋ ์์ 37์ ๋น๊ต
+ 2. ์ฐพ๋ ์์๊ฐ ๋ ํฌ๋ฏ๋ก ์ค๋ฅธ์ชฝ ๋ฐฉ๋ฌธ
+
+![](https://velog.velcdn.com/images/prettylee620/post/2b103a4c-0ae4-49c9-8fe5-42e90b22a0c4/image.png)
+
+2. ํ์ฌ ๋
ธ๋์ ๊ฐ์ ๋น๊ต
+ 1. ํ์ฌ ๋
ธ๋์ ์ฐพ๋ ์์ 37์ ๋น๊ต
+ 2. ์ฐพ๋ ์์๊ฐ ๋ ์์ผ๋ฏ๋ก ์ผ์ชฝ ๋ฐฉ๋ฌธ
+
+![](https://velog.velcdn.com/images/prettylee620/post/8ce7b1e3-4060-4614-b1a4-bdb1f7641055/image.png)
+
+3. ํ์ฌ ๋
ธ๋์ ๊ฐ์ ๋น๊ต
+ 1. ํ์ฌ ๋
ธ๋์ ์ฐพ๋ ์์ 37์ ๋น๊ต
+ 2. ์์๋ฅผ ์ฐพ์์ผ๋ฏ๋ก ํ์์ ์ข
๋ฃ
+
+## 4. AVL ํธ๋ฆฌ
+
+> ์ถ์ฒ : http://yahma.tistory.com/85
+
+![](https://velog.velcdn.com/images/prettylee620/post/16a36b32-e08b-47b3-9c79-bc0bf7f0f176/image.png)
+
+### ๐ ์ ์
+
+* ์ต์
์ ๊ฒฝ์ฐ ์ ํ์ ์ธ ํธ๋ฆฌ๊ฐ ๋๋ ๊ฒ์ **๋ฐฉ์งํ๊ณ ์ค์ค๋ก ๊ท ํ์ ์ก๋** ์ด์ง ํ์ ํธ๋ฆฌ
+* ๋ ์์ ์๋ธํธ๋ฆฌ์ ๋์ด๋ ํญ์ ์ต๋ 1๋งํผ ์ฐจ์ด ๋๋ค๋ ํน์ง
+* ํ์, ์ฝ์
, ์ญ์ ๋ชจ๋ ์๊ฐ ๋ณต์ก๋๊ฐ O(logn)
+
+### ๐ ๊ท ํ ์ธ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/06331d69-34ea-452b-8dc2-6a94c2e07d2f/image.png)
+
+1. ๊ท ํ ์ธ์ : ๊ท ํ์ ์ ๋๋ฅผ ํํํ๋ ๋จ์
+2. ๊ท ํ ์ธ์์ ์ ๋๊ฐ์ด ํฌ๋ฉด ํด์๋ก ๊ทธ๋งํผ ํธ๋ฆฌ์ ๊ท ํ์ด ๋ฌด๋์ง ์ํ
+3. ๊ท ํ ์ธ์ ๊ฐ = ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋์ด - ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋์ด
+4. AVL ํธ๋ฆฌ๋ ๋ ์์์ ์๋ธํธ๋ฆฌ์ ๋์ด๊ฐ ํญ์ ์ต๋ 1๋งํผ ์ฐจ์ด ๋๊ธฐ ๋๋ฌธ์ ์ ๋๊ฐ์ด 2์ด์์ธ ๊ฒฝ์ฐ ์์น ์ฌ์กฐ์ ์งํ
+
+### ๐ ๊ท ํ์ก๋ ๊ณผ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/7727f866-287d-49fa-bb36-bdca3c7896d0/image.png)
+
+1. LL ์ํ : ๊ท ํ์ธ์ + 2๊ฐ ์กด์ฌํ๋ ์ํ
+2. LL ํ์ : LL์ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ท ํ ์ก๊ธฐ ์ํด ํ์ ํ๋ ๋ฐฉ๋ฒ
+3. RR ์ํ : ๊ท ํ ์ธ์ -2๊ฐ ์กด์ฌํ๋ ์ํ
+4. RR ํ์ : RR ์ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ท ํ์ก๊ธฐ ์ํด ํ์ ํ๋ ๋ฐฉ๋ฒ
+
+## ๋ ๋ ๋ธ๋ ํธ๋ฆฌ
+
+* ๋ชจ๋ ๋ฆฌํ ๋
ธํธ์ ๋ฃจํธ ๋
ธํธ๋ ๋ธ๋์ด๊ณ ์ด๋ค ๋
ธ๋๊ฐ ๋ ๋์ด๋ฉด ๊ทธ ๋
ธ๋์ ์์์ ๋ฐ๋์ ๋ธ๋์ด๋ค.
diff --git "a/developLog/book/_ \354\232\224\354\246\230 \352\260\234\353\260\234\354\236\220 \354\232\224\354\225\275 \353\260\217 \354\213\240\354\236\205 \352\260\234\353\260\234\354\236\220\354\235\230 \353\260\251\355\226\245\354\204\261 \354\260\276\352\270\260_feat_ \354\273\244\355\224\274\354\261\227__.md" "b/developLog/book/_ \354\232\224\354\246\230 \352\260\234\353\260\234\354\236\220 \354\232\224\354\225\275 \353\260\217 \354\213\240\354\236\205 \352\260\234\353\260\234\354\236\220\354\235\230 \353\260\251\355\226\245\354\204\261 \354\260\276\352\270\260_feat_ \354\273\244\355\224\274\354\261\227__.md"
new file mode 100644
index 0000000..7da57f1
--- /dev/null
+++ "b/developLog/book/_ \354\232\224\354\246\230 \352\260\234\353\260\234\354\236\220 \354\232\224\354\225\275 \353\260\217 \354\213\240\354\236\205 \352\260\234\353\260\234\354\236\220\354\235\230 \353\260\251\355\226\245\354\204\261 \354\260\276\352\270\260_feat_ \354\273\244\355\224\274\354\261\227__.md"
@@ -0,0 +1,422 @@
+---
+description: ์์ฆ ๊ฐ๋ฐ์ ์ฑ
์ ์ฝ๊ณ ์ ์ ํ๊ธฐ์ ์ปคํผ์ฑ ํ๊ธฐ
+icon: book-open
+cover: >-
+ https://velog.velcdn.com/images/prettylee620/post/2b599a91-49bb-4594-b765-e80acf5a06b9/image.png
+coverY: 0
+---
+
+# ์์ฆ ๊ฐ๋ฐ์ ์์ฝ ๋ฐ ์ ์
๊ฐ๋ฐ์์ ๋ฐฉํฅ์ฑ ์ฐพ๊ธฐ(feat. ์ปคํผ์ฑ)
+
+
+
+## 1์ฅ ์ด๋ฐ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ์ด
+
+![](https://velog.velcdn.com/images/prettylee620/post/e6e104c1-fbf8-4f33-b23e-713993d17faa/image.png)
+
+> **์ฐ๋ฆฌ๋ ํญ์ ์ ๊ทธ๋ฐ๊ฐ**๋ผ๋ ์ง๋ฌธ์ ๋์ง๊ณ ๊ณ ๋ฏผํด์ผ ํ๋ค. ๋ด๊ฐ ์๊ฐํ๋ ๊ฐ๋ฐ์์ ๋ชจ์ต ๊ตฌ์ฒด์ ์ธ ๋ชจ์ต์ด ๊ทธ๋ ค์ง์ง ์๋๋ค๋ฉด, ๋จผ์ ์์ฃผ ์ฌ์ฉํ๋ ์๋น์ค๋ ํ์ฌ๋ฅผ ๋ ์ฌ๋ ค๋ณด์..!
+
+### 1. ํ์ฌ๊ฐ ์ ์ํ๋ ๊ฐ๋ฐ์
+
+์ด๋ค ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง๋ฅผ ๋ณด๋ฉฐ, ์ธ์์์ ์ ์ํ๋ ๊ฐ๋ฐ์์ ๋ชจ์ต์ด ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๋ ๋ฌธ์ ํด๊ฒฐ์ฌ๋ผ๋ฉด ํ์ฌ๊ฐ ์ ์ํ๋ ๊ฐ๋ฐ์๋ **ํน์ ๋ฌธ์ ๋ฅผ ํ์ฌ๋ง์ ๋ฐฉ์์ผ๋ก ํ์ํ๊ฒ ํด๊ฒฐํ๋ ๋ฌธ์ ํด๊ฒฐ์ฌ**
+
+### 2. ๋ด๊ฐ ์ ์ํ๋ ๊ฐ๋ฐ์
+
+๊ฐ์ ๊ฐ๋ฐ์์ฌ๋ ๋ชจ๋ ๋ค๋ฅธ ์ปค๋ฆฌ์ด๋ฅผ ์์ผ๋ฉด์ ๊ทธ ๊ณผ์ ์์ **์์ ๋ง์ ์ฅ์ ์ด ๋
น์๋ ๊ธธ์ ์ง์ ๋ง๋ค์ด์ผ ํจ**
+
+> ์ฆ, ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ด๋ค ๊ฐ์น๋ฅผ ๋ง๋๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ์์ง ๊ณ ๋ฏผํ๋ฉฐ ์ ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/cef83f7f-3198-4f85-bde9-6ee75ba3c30c/image.png)
+
+#### 1) ์ข์ ๊ฐ๋ฐ์์ ๋๋ชฉ + ์ํ๊ณ ์ถ์ ๊ฒ ์๊ฐ
+
+์ข์ ๊ฐ๋ฐ์์ ๋๋ชฉ์ ๋ฌด์์ธ๊ฐ๋ฅผ ๊ณ ๋ฏผํ๋ฉฐ ๋์์ ๋ด๊ฐ ์ํ๊ณ ์ถ์ ๊ฒ์ด ๋ฌด์์ธ์ง๋ฅผ ์๊ฐํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ํ๋ค.
+
+* ์์๋ก ๋ฌธ์ ์ ์, ๋ฌธ์ ํด๊ฒฐ, ํด๊ฒฐ๋ฐฉ์ ๊ณต์ ๋ผ๊ณ ์๊ฐํ๊ณ ํจ๊ป ๋ฐ๊ฒ ๋๋ต๊ฒ ์ฑ์ฅํ ์ ์๋ ๊ต์กํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ์
+
+ํ ๋ฒ์ ์ ์ํ๋ ๊ฒ์ด ์๋ `๊พธ์คํ ์ฌ์ ์`์ ํ์ํ๋ค๊ณ ํจ
+
+#### 2) ๋ด ํธ๊ธฐ์ฌ์ ์๊ทนํ๋ ๊ฒ์ ๋ฌด์์ธ๊ฐ
+
+> ๋์ ๊ฑฐ๋ฆฌ๊ฐ ๋จผ ๊ฐ๋ฐ์๋ณด๋ค๋ ์ด๋ค ๋ณํ๋ฅผ ์ผ์ผํค๊ณ ์ถ์์ง ์ง๋ฌธํ๋ฉฐ ์ ๊ทผ
+
+๋๋ฌด ๋ง๋ค๋ฉด ์์ ์ด ์ด๋ค ๋ถ๋ถ์ ๊ฐ์ฅ ๋ง๋ ๋์ ์ฐ๋์ง ์ดํด๋ณด๊ณ ์คํจํ ๊ฒฝํ ๋ํ ๊ณต์ ํ์. **ํ์ฌ์ ๋ฌธํ์ ๋น์ ์ ์ดํด**ํ๋ฉด ํด๋น ํ์ฌ๊ฐ ์์ ์๊ฒ ์ ํฉํ์ง, ๊ทธ ํ์ฌ์ ๊ฐ๋ฐ์๋ ์ด๋ค ์ข
๋ฅ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋์ง๋ฅผ ์ ์ ์๋ค.
+
+๊ทธ๋ ๊ฒ ๋๋ฉด ์์ ์ ์ง๋ก์ ์ ์ฒด์ฑ์ ๋ ๋ช
ํํ๊ฒ ์ ์ํ ์ ์์ผ๋ฉฐ ๋ด๊ฐ ์งํฅํ๋ ๊ฐ์น๋ฅผ ์ถ๊ตฌํ๊ณ ๋ด๊ฐ ํ๊ณ ์ถ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ธฐ์
์ ์ฐพ์.
+
+## 2์ฅ ๋๋ํ๊ฒ ํ์ตํ๊ณ ์ถ์ด
+
+![](https://velog.velcdn.com/images/prettylee620/post/8d8f598f-d9b2-4daf-84d0-a589ca8058c1/image.png)
+
+### 1. ์ถ๋ฐํ๊ธฐ ์ ๊ณ ๋ฏผํด์ผ ํ ๋ ๊ฐ์ง
+
+> ํ๋ก๊ทธ๋๋ฐ์ ํ์ต์ ์์์ ํผ๋๋ฐฑ๊ณผ ํ๊ณ
+
+![](https://velog.velcdn.com/images/prettylee620/post/4f903100-c517-4eac-9251-4792b595c837/image.png)
+
+์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ด ํ์ํ๋ค. ๊ทธ๋์ผ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฑ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์น ๊ฒฝํ์น๋ฅผ ์ป๊ณ ์ฑ์ฅํ๋ ์๋๋ฅผ ๋ณด๋ฉฐ ์ฌ๋ฏธ๋ฅผ ๋๋ผ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ง
+
+์ฃผ๊ธฐ์ ์ธ ํ๊ณ ๊ฐ ํ์ํ ์ด์ ๋ **ํผ๋๋ฐฑ์ ์ ๋ฐ์ํ๊ธฐ ์ํด์**์ด๋ค.
+
+### 2. ๊ฐ์ธ์ด ํ๋ ํ๊ณ
+
+* ๊ณต๋ถ๋ฅผ ๋๋ธ ํ **์ด๋ค ํ์ต ๋ฐฉ๋ฒ์ด ๋์๊ฒ ์ ์ฉํ๋์ง ์ด๋ค ๋ด์ฉ์ ํ์ต์ ํ๋ค์๋์ง** ์ ์ด๋ณด๋ ๊ฒ
+
+### 3. ํ ๋จ์ ํ๊ณ
+
+* ์ ๊ธฐ์ ์ธ ํ๊ณ ๋ฅผ ํตํด ์คํฐ๋๊ฐ ๋ชฉ์ ์ ํฅํด ์ ๋์๊ฐ๊ณ ์๋์ง ๊ฐ์ ์ฌ๋ถ ํ์ธ ๊ฐ๋ฅ
+
+### 4. ์ด๋์ ๋ฐฐ์์ผ ํ ๊น
+
+#### 1) ๐ ์ฑ
: ์ฝ์ง๋ง ๋ง๊ณ ์ ์ฉํ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/2399c359-90a1-40ed-a67b-65728f078e9f/image.png)
+
+1. ์ดํด๋ณด๊ธฐ : ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ ์ดํดํ๊ณ ์ด๋ค ๋ถ๋ถ์ ์ง์คํด์ ์ฝ์์ง๋ฅผ ๊ฒฐ์
+2. ์ง๋ฌธํ๊ธฐ : ๊ฐ ์ฅ์ด๋ ์ ์ ์ฝ๊ธฐ ์ ์ ์ค์ค๋ก ์ง๋ฌธํ๋ ๊ณผ์ ์ผ๋ก ์ ๊ทน์ ์ธ ํ์ต ํ๋
+3. ์ฝ๊ธฐ : ์ ์ ๋ง๋ ์ง๋ฌธ๋ค์ ๋ํ ๋ต์ ์ฐพ์ผ๋ฉฐ ์ฌ๋ ๊น๊ฒ ๊ณ ๋ฏผํ๋ ๊ฒ์ด ์ข์
+4. ์์ฝํ๊ธฐ : ์์ ์ ๋ง๋ก ์์ฝํ๊ณ ์ค์ํ ๊ฐ๋
์ ๋ฆฌ
+5. ๋ณต์ตํ๊ธฐ : 2๋จ๊ณ์ ๋ง๋ ์ง๋ฌธ์ ๋ํ ๋ตํ๊ณ ํ์ตํ ๋ด์ฉ ๋์ง์ด๋ณด๊ธฐ
+
+#### 2) ๐ฉโ๐ป ์จ๋ผ์ธ ๊ฐ์ : ๊ฐ์ฌ ์๊ฐ๊ณผ ๋ด ์๊ฐ์ ์ฐจ์ด๋ฅผ ์ฐพ์
+
+![](https://velog.velcdn.com/images/prettylee620/post/218a3dbb-1abe-4c82-afec-9cec8de4f2cb/image.png)
+
+1. ๋ชฉ์ฐจ๋ณด๊ธฐ : ๋ฐฐ์ธ ๋ด์ฉ ์๋ฎฌ๋ ์ด์
+2. ๋ด๊ฐ ์๊ฐ ํ ๋ด์ฉ๊ณผ ๊ฐ์ฌ์ ์ด์ผ๊ธฐ ๋น๊ต : ์ ๊ฐ๊ณ ๋ค๋ฅธ์ง ์ด์ ๋ฅผ ํ์
ํ๋ฉฐ ์ง์์ ๋ฅ๋์ ํก์
+3. ๊ณผ๊ฑฐ์ ๊ฒฝํ๊ณผ ๊ฐ์ ๋ด์ฉ์ ์ ๊ทน์ ์ ๋ชฉ : ์ ๋ฆฌํ๋ ๊ฒ์ ๊ทธ์น๋ ๊ฒ์ด ์๋ ๊ฒฝํ ์ ๊ทน์ ๋ฐ์
+
+> ํ๋ก๊ทธ๋๋ฐ ํ์ต์ ์์ด ํ๋์ ์ ๋ต์ ์๋ค. **์ต์ ์ ํ์ต ํ๊ฒฝ์ ์ค์ค๋ก ๋ง๋ค์ด ๋๊ฐ์ผ ํ๋ค**
+
+#### 3) โ ์ด๋ค ๊ฒ๋ถํฐ ๊ณต๋ถํด์ผ ํ ๊น
+
+ํ๋ก๊ทธ๋๋ฐ์ ๋ณธ์ง์ ๋ฌธ์ ํด๊ฒฐ์ด๋ฏ๋ก ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ง ๋จผ์ ์ ์ํ๊ณ ๊ทธ ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ํด ์ ์ ํ ๋๊ตฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ => `ํด๊ฒฐํ๊ณ ์ถ์ ๋ฌธ์ `์ ์ด์ ์ ๋ง์ถฐ ํ์ต ๋ฐฉํฅ์ ์ค์
+
+**Step 1 ๋ด๊ฐ ํด๊ฒฐํด๋ณด๊ณ ์ถ์ ๋ฌธ์ ์ ๋งฅ๋ฝ ์ฐพ๊ธฐ**
+
+ํ์ ๊ด์ฌ์ ๊ฐ์ก๋ ํ์ฌ๋ ์๋น์ค๋ฅผ ์ดํด๋ณด๋ฉด์ ๋ด๊ฐ ์ ์ํ ๊ฐ๋ฐ์์ ๋ชจ์ต๊น์ง ๊ณ ๋ฏผํ๋ค๋ฉด ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ ๋ฅผ ์ฐพ๋ ๊ณผ์ ์ ๋ ์ฌ์์ง ๊ฒ
+
+**Step 2 ์ค๋ฌด์์๊ฒ ์ฐ๋ฝํ๊ธฐ**
+
+> \*\* ์ฐ๋ฝํ ์ ์๋ ๋ฐฉ๋ฒ\*\*
+
+* ์ธํ๋ฐ ์ปคํผ์ฑ
+* ์ปคํผ์ฑ ์ฑ
+* ํธ์ํฐ
+* ๋งํฌ๋์ธ
+* ์คํ ์นดํก๋ฐฉ
+
+๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ญ๋์ ์ค๋ฌด์์๊ฒ ๋ฌผ์ด๋ณด๋ฉฐ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๋์ ์ฐพ์(๋งํฌ๋์ธ ์ฝ๋๋ฉ์ผ)
+
+**Step 3 ๊ฐ ํ์์ ์ํ๋ ์ญ๋ ์กฐ์ฌํ๊ธฐ**
+
+์ํ๋ ์ง๊ตฐ๊ณผ ํ์ฌ์์ ์ผํ๊ธฐ ์ํด์๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์ญ๋ ํ์
ํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฑ์ฅํ๋ ์ฌ์ดํด ๋ง๋ค๊ธฐ
+
+> * ํ ๋ฌธํ๋ ์ด๋ค์ง
+
+* ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋์ง
+* pr ๋ฆฌ๋ทฐ๋ ์ด๋ป๊ฒ ์งํํ๋์ง
+* ํ์ฌ ํ์์ ๊ฐ์ฅ ๋ชฉ๋ง๋ผํ๋ ์ญ๋์ ๋ฌด์์ธ์ง
+
+> ์ฑ์ฉ ๊ณต๊ณ ์ ์๋ ๋ชจ๋ ์๊ฑด์ ์ถฉ์กฑํ๋ ์ฌ๋์ ๊ฑฐ์ ์๋ค. **์ฑ์ฉ ๊ณต๊ณ ์์ ์ด๋ค ๊ฒ์ด ๋ ์ค์ํ ์ง ํ์
ํ๊ณ ์ฑ์ด ํ ๋๋จธ์ง ์ญ๋์ ์ด๋ ํ ๋ฐฉํฅ์ผ๋ก ์ ์ง์ ์ผ๋ก ์ฑ์ฅ์ํค๋ ค๊ณ ํ๋ค๋ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ค์**
+
+๋ฌธ์ ํด๊ฒฐ์ ํ์ํ ์ญ๋์ ์ ๊ทน์ ์ผ๋ก ์ฐพ์์ ํ์ตํ๋ ์ฌ์ดํด์ ๋ง๋ค์ด์ผ ๋น ๋ฅด๊ฒ ์ฑ์ฅ ๊ฐ๋ฅํ๊ณ ๋ฒ์์์ด ๋ ์ฌ ์ ์๋ค. ์ ๋๋ก ๋ชฉํ์ ๋ค๊ฐ๊ฐ๊ณ ์๋๊ฐ์ ๋ํ ์ง๋ฌธ์ ์ค์ค๋ก ํ๊ธฐ
+
+#### 4) ๋ฌด์๋ถํฐ ๋ง๋ค์ด์ผ ํ ๊น
+
+1. ๋์ ๊ฐ๋ฅํ ์์ ๋ฒ์ ๋ถํฐ ๋ง๋ค๊ธฐ : ํต์ฌ ๊ธฐ๋ฅ ํ์
๊ฐ๋ฅ
+
+* ํ์ค์ฑ์ ๋์ํ๊ธฐ ์ํด ์ฌ์ฉ์์ ํผ๋๋ฐฑ์ ๋ฐ์ผ๋ฉฐ `์ ์ง์ ๋ฐ์ `์์ผ์ผ ํ๋ค. ์ฆ ๋ค ๊ตฌํ์ ๋ชปํ๋๋ผ๋ ์ธ์ ๋ ํต์ฌ ๊ธฐ๋ฅ์ด ๋์ํ๋๋ก ๋ง๋๋ ์ฐ์ต
+
+2. ์ฐ๊ณ ๊ธฐ๋ฅ ํ์ฅ
+3. ๋ ์ด์์ ๊ตฌํ
+4. ์คํ์ผ ์ ์ฉ
+5. ์ฌ์ฉ์ ํผ๋๋ฐฑ ์ ์ฉ : ์ด๋ป๊ฒ ํผ๋๋ฐฑ์ ์์ฒญํ ๊น
+
+#### 5) ์ง๋ฌธ์ ๋๋ํ๊ฒ ํ ๊ฒ
+
+> ํผ๋๋ฐฑ์ ์์ฒญํ ๋๋ ๋ชฉ์ ์ ๋ถ๋ช
ํ ํ๊ณ ํ์ฌ ์ํฉ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช
ํ๋ฉฐ ์๋ก ์ดํดํ ๋ด์ฉ์ด ์ผ์นํ๋์ง ํ์ธํ๋ ๊ณผ์
+
+#### 6) ์คํฐ๋ด ๋ด์์์ ํผ๋๋ฐฑ ์ ๋ต
+
+1. ๊ตฌ์ฒด์ ์ธ ๋ชฉํ ์ค์
+
+> Ex. X์๊ฐ ์์ y ๊ตฌํํ๊ธฐ ์๋ฐ์คํฌ๋ฆฝ์ผ ๊ธฐ๋ณธ์์์ ๋ชจ๋ฅด๋ ๊ฐ๋
๋ค๋ฃฌ ์ฑํฐ 4๊ฐ ํ๋ฌ ๊ฐ ๊ณต๋ถํ ํ ์์ ๋ฅผ ํตํด ์ค๋ช
ํ ์ ์์ ์ ๋๋ก ํ์ตํ๊ธฐ
+
+2. ์ฃผ๊ธฐ์ ์ธ ๋ชฉ์ ํ์ธ ๋๋ํ๊ฒ ์ง๋ฌธํ๊ธฐ
+3. ์ฑ์ ์๊ฒ ์ง๋ฌธํ๊ธฐ : ์ํ์ฐฉ์ค ๊ณผ์ ์ ์ค๋ช
ํ๋ ๋ฐฉ๋ฒ์ ๋ฌ๋ฒ๋ ๋๋ฒ๊น
์ด๋ผํ๋ฉฐ ์ง๋ฌธํ๊ธฐ ์ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ์ฒ์๋ถํฐ ์ค๋ช
ํ๊ณ ํด๊ฒฐํด๋ณด๋ ๋ฐฉ๋ฒ => ๋ต๋ณํด์ฃผ๋ ์ฌ๋ ๋ํ ๋ชจ๋ ๋จ๊ณ์ ๋ํ ์ค๋ช
ํด ์ค ๊ฒ
+4. ์คํ์ผ๋ณด๋ค๋ ๊ตฌ์ฒด์ ์ธ ํด๊ฒฐ๋ฐฉ์ ์ง๋ฌธํ๊ธฐ ์ ๋ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋๋ฐ ํน์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์๊น์?
+5. ์ดํด ๋ด์ฉ ์ฑํฌ ๋ง์ถ๊ธฐ
+
+#### 7) ํ์ด ํ๋ก๊ทธ๋๋ฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/8cb2e6f3-7206-46c8-a934-b12fc67d4069/image.png)
+
+> ์ค๋ฅ๋ฅผ ๋นจ๋ฆฌ ํ์งํ๋ ๋ฒ๊ทธ ์๋ฅผ ์ค์ผ ์ ์๊ณ ํ์ ๊ฐ์ ์ ๋ขฐ๊ฐ ๋์์ง๋ฉฐ ๋ ์ฝ๊ธฐ ์ข์ ์ฝ๋๋ฅผ ๋ง๋ค ํ๋ฅ ์ด ๋์์ง๋ค.
+
+**๐ฅ ๋ด๋น๊ฒ์ดํฐ์ ๋๋ผ์ด๋ฒ**
+
+* **๋๋ผ์ด๋ฒ** :ํค๋ณด๋๋ฅผ ์ง์ ์ก๊ณ ํ๋ก๊ทธ๋จ ์์ฑํ๋ ์ญํ
+* **๋ด๋น๊ฒ์ดํฐ** : ๋ด๋น๊ฒ์ด์
์ฒ๋ผ ์ ์ฒด ์ง๋๋ฅผ ๋ณด๋ฉฐ ๋ชฉ์ ์ง๊น์ง ์ ๋๋ก ๊ฐ ์ ์๊ฒ ํ์ธํ๋ ์ญํ , ๋ฒ๊ทธ ํ์ธ
+
+**๐ฅ ํ์ด ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ์์ **
+
+1. ํ ์ฌ๋์ด ํ ๊ฐ์ง ์ญํ ์ ์ค๋ ํ์ง ์์์ผ ํ๋ค.
+2. ์ํ ๊ด๊ณ ์ ์ง
+3. ๋ฌธ์ ์ ๋ช
ํํ๊ฒ ์ ์ํ๊ณ ์๊ตฌ ์ฌํญ์ ํจ๊ป ์ ๋ฆฌ
+4. ์ฝ๋ฉ ์คํ์ผ ๊ท์น์ ์ ํ๊ณ ์๊ตฌ์ฌํญ์ ๋ง๋ค๋ฉฐ, ํธํ๊ฒ ์ด์ผ๊ธฐ๋ฅผ ๋๋๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ง์ง๋ง์ผ๋ก ํ๊ณ ๊น์ง ํด์ฃผ์.
+
+#### 8) ํจ๊ณผ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐฉ๋ฒ
+
+1. ํด๊ฒฐํ๊ณ ์ถ์ ๋ฌธ์ ์ ์๋ ๋๋ฌ๋ด๊ธฐ : ๋ด๊ฐ ๋จผ์ ์ฝ๋๋ฅผ ๋ณต๊ธฐํ๋ค๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒฝ์ฐ๋ ์์ ๋ณต๊ธฐ ํ ํผ๋๋ฐฑ ์์ฒญ
+2. ์ฝ๋ ๋ฆฌ๋ทฐ ๊ณผ์ ์์ ๋ฆฌ์ก์
ํ๊ธฐ\
+ : ์ง๋ฌธ์ ๋๋ํ๊ฒ ํ๋ฉฐ, ํผ๋๋ฐฑ ์ ๊ทน์ ๋ฐ์
+3. ์ฝ๋ ๋ฆฌ๋ทฐ ํ ํ๊ณ ๋ก ๋๋์๋ณด๊ธฐ : ๋ด๊ฐ ๋ค์์ ๋ ์ํ๊ณ ์ถ์ ๋ถ๋ถ์ด๋ ๋ง์กฑ์ค๋ฌ์ด ๋ถ๋ถ์ ์ดํด๋ณด๋ ๊ณผ์ ๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐ ํ ๊ท์น ๋ง๋ค๊ธฐ
+
+**๐ฅ ์ฝ๋ ๋ฆฌ๋ทฐ ์ ๊ฒํ ํ ํญ๋ชฉ**
+
+**1. ์ด ์ฝ๋๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๊ฐ(ํนํ ์ค์)** : ๋์น ๊ฒฝ์ฐ์ ์๋ ์๋์ง ํน์ ์์ ๋๋ ๋ฒ๊ทธ๋ ์๋ ์ง ์ดํด๋ณด๋ ๊ฒ์ด ์ค์
+
+**2. ์ฝ๋ ํ์ค์ ์ง์ผฐ๋์ง** ์ฝ๋ฉ ํ์ค์ ์ฝ๋ ๊ฐ๋
์ฑ, ์ผ๊ด์ฑ, ์ ์ง ๋ณด์์ฑ, ๋ฒ๊ทธ ์ํ ๊ฐ์ ๋ฑ ๋ค์ํ ์ด์ ๋ก ์ค์ํ๊ฒ ์ฌ๊ฒจ์ง
+
+**3. ์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ์ ํ์ธํ๋๊ฐ** ํ์ฌ ์ฝ๋๊ฐ ์ปดํจํฐ์ ์์์ ํ์ ์ด์์ผ๋ก ์ฌ์ฉํ์ง ์๋๋, ์ฌ์ฉ์์ ์
๋ ฅ ๋๋ ๋ฐ์ดํฐ ์๊ฐ ์ฆ๊ฐํ๋ฉด์ ์ฒ๋ฆฌ ์๋๊ฐ ์ ํ๋๊ฑฐ๋ ๋ฉ์ถ๋ ์ผ์ด ์๋์ง ๋ฑ์ ํ๋จํ๋ค.
+
+**4. ๋ณด์ ์ธก๋ฉด์์ ์ทจ์ฝํ ๋ถ๋ถ์ ์๋๊ฐ**
+
+**๐ฅ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ ํ์ธ**
+
+> **์ฝ๋ ๋ฆฌ๋ทฐ ์ ์๋ฒฝํ์ง ์์๋ ๊ณต์ ํ๋ ๊ฒ์ด ์ค์**ํ๋ฉฐ, ์๊ฐ ์ ํ์ ์ ํ๋ ๊ฒ์ ์ถ์ฒํ๋ค๊ณ ํจ
+
+๋จ, ์ฝ๋ ๋ฆฌ๋ทฐ๋ ๊ตฌ์ฒด์ ์ธ ํด๊ฒฐ ๋ฐฉ์์ ์ง๋ฌธํ๋ฉฐ ๋๋ํ๊ฒ ์์ฒญํด์ผ ํ๋๋ฐ ์ฝ๋์ ํจ๊ป ๋ด ์๋์ ํผ๋๋ฐฑ ๋ฐ๊ณ ์ถ์ ๋ถ๋ถ์ ์์ธํ ๋จ๊ฒจ์ผ ํจ
+
+#### 9) ์ฑ ์งํผํฐ๋ก ํ์ต๋ฒ
+
+1. ๋์ ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ๋ฒ์ ๋ถํฐ ๋ฌผ์ด๋ณด๊ธฐ : ์ํํธ์จ์ด์ ๋ณธ์ง์ ๋ฌธ์ ํด๊ฒฐ์ด๋ฏ๋ก ๋ฌธ์ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๋ฉด ํ์ต ํจ๊ณผ๊ฐ ๋ ํฌ๋ค
+2. ์ฝ๋ ์์ฑ ๋ฐ ๋ฆฌ๋ทฐ ์์ฒญํ๊ธฐ : ์ฑ์งํผํฐ๊ฐ ์์ฑํ ์ฝ๋๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ์ธ์ง ๊ฐ๋ตํ๊ฒ ์ฑ๋ช
๋ผ๋ ๊ฐ์ ๊ฐ๋ฅํ ๋ฌธ์(๊ตฌ์ฒด์ ์ธ ์์)
+
+> * ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ด ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์์๊น์?
+
+* ์ด ์ฝ๋์ ๋ณด์ ์ํ ์์๊ฐ ์๋์?
+
+3. ๋ฐฉํฅ์ฑ๊ณผ ์์ ์์ฒญํ๊ธฐ ์ฝ๋ ์์ฑ ์ ์ด๋ ค์์ ๋๋๋ค๋ฉด ์ง๊ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๊ฒ์ฃผํฐ ์๋ํด์ผ ํ๋์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค. ๊ฒ์๊ณผ ํ์ต์ ํตํด ๋ด์ฉ์ ๊ฒ์ฆํ๋ฉฐ ๊ฐ๋ ฅํ ํผ๋๋ฐฑ ๋๊ตฌ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
+
+## 4์ฅ ํจ๊ป ์ฑ์ฅํ๊ณ ์ถ์ด
+
+> 3์ฅ์ ์ด๋ ฅ์ ๊ด๋ จ์ด๋ผ ์ฝ๊ธฐ๋ง ํ๊ณ ์ ๋ฆฌ๋ no no
+
+### 1. ํผ์ ๊ณต๋ถํ๊ณ ์๋ค๋ฉด
+
+> ํผ๋๋ฐฑ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๊ฒฝ์ ์ฐธ์ฌํ๋ฉฐ ์ฑ์ฅํ ์ ์๋ ํ๊ฒฝ ์ง์ ๋ง๋ค๊ธฐ
+
+**๋ชฉํ, ๊ธฐ๊ฐ, ๊ท์น ์ ํ๊ธฐ**
+
+
+
+๋ชฉํ ์ค์
+
+* ์ธก์ ํ ์ ์๋ ๋ชฉํ๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์
+* ์๋ฐ์คํธ๋ฆฝํธ 10๊ฐ์ง ํต์ฌ ๊ฐ๋
์ ์์์ ํจ๊ป ์ค๋ช
ํ ์ ์๋๋ก ์ฐ์ตํ๊ธฐ
+
+๊ธฐ๊ฐ ์ค์
+
+* ํ ๋ฌ ์ด๋ด๋ก ์งง๊ฒ ์ค์ ํด์ ์์ ์ฑ๊ณต ๋น ๋ฅด๊ฒ ๋ง๋ณด๊ธฐ
+* ๋ฐ์ ๋๋ ์ ์ ๋ฉ์ถฐ๊ฐ๊ธฐ
+
+๊ท์น ์ค์
+
+* ์คํฐ๋ ์๊ฐ์ ๋ฆ์ ๊ฒ ๊ฐ๋ค๋ฉด 10๋ถ ์ ๊น์ง ๋ฉ์ธ์ง ๊ณต์ ํ๊ธฐ ์ฒ๋ผ ๊ตฌ์ฒด์ ์ผ๋ก ์ค์
+* ๊ฐ์ฅ ์ค์ํ ๊ท์น 2-3์ง
+
+### 2. ํ๊ฒฝ์ ์ ์ด์ํ๊ธฐ
+
+1. ๋ชจ๋ ๊ตฌ์ฑ์์ ๋ฅ๋์ ์ฐธ์ฌ
+2. ์ค๊ฐ ํ๊ณ
+
+#### 1) ์๋ฏธ ์๊ฒ ๋ง๋ฌด๋ฆฌ
+
+๊ฐ๋
์ ์ ์ฉํ๊ณ ํจ๊ป ํ์ตํ ๋ด์ฉ์ผ๋ก ๊ฐ์ ์ด๋ค ๊ฒฝํ์ผ๋ก ๊ฐ์ฒํด๋๊ฐ๋์ง ๊ณต์ ํ๋ ๊ฒ์ด ๊ฐ์น ์๋ ์ผ์ด๋ฉฐ ๋ค๋ฅธ ์ฌ๋๊ณผ ํผ๋๋ฐฑ์ ์ฃผ๊ณ ๋ฐ๋ ํ๊ฒฝ ๊ฐ์ฒ
+
+#### 2) ํ์ฌ์์ ๋ ํผ์๋ผ๋ฉด
+
+์ค์ค๋ก ๋ง๋๋ ํ๊ฒฝ ์ด๋ป๊ฒ ํ๋ฉด ๊ฐ๋ฐ ์ค์ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๋์ง ๊ณ ๋ฏผํด์ผ ํ๋ค.
+
+#### 3) ํผ์์ธ ์ํฉ์์๋ ํผ๋๋ฐฑ์ ๋ฐ๋ ๋ฐฉ๋ฒ
+
+1. ํ์ฌ ๋ด ๋๋ฃ ๋ง๋ค๊ธฐ : ๋ค๋ฅธ ํ์ ํผ์ํ๋ ๊ฐ๋ฐ์๊ฐ ์๋ค๋ฉด ์ฐพ์๋ณด์
+2. ์ธ๋ถ ํ๊ฒฝ ๋ง๋ค๊ธฐ : ๋ด๋ถ์์ ์ฐพ๊ธฐ ์ด๋ ต๋ค๋ฉด ์ธ๋ถ์์ ์คํฐ๋๋ ์ปค๋ฎค๋ํฐ๋ฅผ ํตํด ํจ๊ป ์ฑ์ฅํ ๋๋ฃ ์ฐพ๊ธฐ
+3. ๋ค๋ฅธ ์ง๊ตฐ์ ๋๋ฃ์ ํ์ด ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ํผ์๋ผ๊ณ ๋๊ปด์ง๊ฑฐ๋ ์ถฉ๋ถํ ํผ๋๋ฐฑ์ ๋ฐ์ง ๋ชปํ๊ณ ์๋ค๊ณ ๋๋ ๋, ๋ฐ๋ก ๊ทธ๋๊ฐ ์๋ก์ด ๋์ ์ ์์ํ ์ต์ ์ ๊ธฐํ ์ข์ ํ์์ด ๋๊ณ ์ถ๋ค๋ฉด : ๋ฉ์ ์ ์ ํ์ํธ
+
+> ํ์
์ ํต์ฌ์ ์ปค๋ฎค๋์ผ์ด์
+
+## 6์ฅ ๋ ์ค๋๋ ์ํ๊ณ ์์ด
+
+> 5์ฅ์ ๊ฒฝ์ฐ ์ด์ง ๊ด๋ จ๋ ์ด์ผ๊ธฐ๋ก ์ฝ๊ณ ์์ฝ์ ํ์ง ์์๋ค!
+
+### 1. ์ฑ์ฅ๋ณด๋ค ์ค์ํ ๊ฒ์ ๋ฐฉํฅ์ฑ
+
+> ์ด๋ค ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ์๊ฐ๋ณด๋ค ์ค์ํ ๊ฑด **์ด๋ค ๊ฐ๋ฐ์๋ก ์ด์๊ฐ๊ณ ์ถ์๊ฐ**์ด๋ค.
+
+#### 1) ์๊ตฌ ์ค์ํ๊ฒ ์๊ฐํ๋ ๊ฒ 3๊ฐ์ง๋ฅผ ๊ณจ๋ผ๋ณด์
+
+![](https://velog.velcdn.com/images/prettylee620/post/304e7e30-132e-4855-a27a-3971530e5b76/image.png)
+
+์์ ์ฌ์ง์ ๊ฒฝ์ฐ ํ๊ตญ๋นํญ๋ ฅ๋ํ๊ต์ก์์์ ์ ๊ณตํ ์๊ตฌ๋ชฉ๋ก์ผ๋ก ์๊ตฌ๋ชฉ๋ก ์ค **์์ ์ด ์ค์ํ๊ฒ ์๊ฐํ๋ ํค์๋๋ฅผ 3๊ฐ์ง**๋ฅผ ๊ณ ๋ฅธ๋ค.
+
+๋์ ๊ฒฝ์ฐ 3๊ฐ์ง๋ก ์ถ๋ฆฌ๊ธฐ๊ฐ ํ๋ค์ด 4๊ฐ์ง ๊ณจ๋๋ค ใ
ใ
ใ
+
+> * ์ ์ฒด์ ์์กด
+
+* ์ฌํ์ /์ ์์ ์ํธ์์ฉ
+* ๋์ด/์ฌ๋ฏธ
+* ์๊ธฐ ๊ตฌํ
+
+๊ทธ ๋ค์ ๊ทธ๊ฒ์ ๋ฐ์ ์๋ ํค์๋๋ฅผ ์ฌ๋ฌ ๊ฐ 1์ฐจ๋ก ๋ฝ๊ณ ๊ทธ ์ค 3๊ฐ์ง๋ฅผ ๋ฝ๋๋ค.
+
+> * 1์ฐจ๋ก ๋ฝ์ ํค์๋ : ํด์, ์์ , ์น๋ฐํ ๊ด๊ณ, ๋ฐฐ๋ ค, ํ๋ ฅ, ์ฆ๊ฑฐ์, ์ฑ์ฅ, ์ฐฝ์กฐ์ฑ
+
+* 2์ฐจ๋ก ๋ฝ์ ํค์๋ : ํ๋ ฅ, ์ฑ์ฅ, ์ฆ๊ฑฐ์, ํด์
+
+#### 2) ๋ด๊ฐ ๋๊ณ ์ถ์ ๊ฐ๋ฐ์๋..
+
+์์ ํค์๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณด๋ฉด
+
+> ๋๋ ์ฑ์ฅ์ ํ๊ณ ์ถ์ผ๋ฉฐ, ์ฑ์ฅํ๊ธฐ ์ํด์๋ ์ฆ๊ฑฐ์์ ๊ฐ์ง๊ณ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ํ๋ ฅํ๋ฉฐ(= ๊ณต์ ํ๋ฉฐ) 1๋ช
์๊ฒ๋ผ๋ ๋์์ ์ฃผ๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ์ผ๋ฉด ์ ๋นํ ํด์์ ํ์ํ๋ค.
+
+#### 3) ๋ด๊ฐ ๋๊ณ ์ถ์ ๊ฐ๋ฐ์๋ฅผ ์์๋ค๋ฉด ์์ ์ฑ๊ณต๋ค ๋ง๋ค์ด๊ฐ๊ธฐ
+
+์ด์จ๋ ์ฑ์ฅ์ ์ฅ๊ธฐ์ ์ด๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ฌ๋ฆฌ๋ ๊ฒ์ด ์๋ **๋ด๊ฐ ์ํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฌ๋ฆฌ๊ณ ์๋๊ฐ๊ฐ ์ค์ํ๋ค.**
+
+์ฆ, ์์ ์ฑ๊ณต๋ค๋ก ์ฒ์ฒํ ์ฑ์๊ฐ๋ฉฐ ์์ ์ด ์ํ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ค๋ฉด ์ํ๋ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์๋ค.
+
+## ๐ค ์ฑ
์ ์ฝ๊ณ ๊ฐ์ธ์ ์ธ ์๊ฐ๊ณผ ๋ฐฉํฅ์ฑ
+
+### 1. ์ํ๋ ํ์ฌ ์ต์ ์ ์๋๋๋ผ๋ ์ฐจ์ ์ ์ฐพ์๋ณด๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
+
+ํ์ฌ๋ฅผ ๋ค๋ ์ง๋ 2์ฃผ ์กฐ๊ธ ๋์์ง๋ง ์์ ์ด ์ํ๋ ์๋น์ค๋ฅผ ํ์ฌ์์ ๋ง๋ค ์ ์๋ ๊ณณ์ ๊ทนํ ์ผ๋ถ ์ผ ๊ฒ ๊ฐ๋ค๋ผ๋ ์๊ฐ์ด ๋ ๋ค. ์์ ์ด ์ํ๋ ์๋น์ค๋ฅผ ๋ง๋๋ ํ์ฌ์ ๋ค์ด๊ฐ ์๋ ์์ง๋ง ๊ทธ๋ ์ง ์๋ค๋ฉด ์์ ์ ์๊ฒฌ์ ํผ๋ ฅํ ์๋ ์๊ฒ ์ง๋ง **ํ์ฌ์๋ ๊ท์น์ด ์๊ธฐ์ ํ์ฌ์์ ๋งํ๋ ๋ฌธ์ ๋ฅผ ๊ทธ ํ์ฌ์ ๊ท์น์ ๋ฐฉ์์ ๋ง๊ฒ ํด๊ฒฐํ๋ ๊ฒ์ด ๊ฐ๋ฐ์๊ฒ ์ง..**
+
+> ํ์ฌ๋ก ์ฑ์ฅ๋ ๊ฐ๋ฅํ๊ฒ ์ง๋ง\*\* ํ์ฌ๋ ๊ฐ์ธ์ ์กฐ๊ธ ๋ถ๋ฆฌํด์ ๋ด์ผ ํ ๊ฒ ๊ฐ๋ค\*\*๋ผ๋ ์๊ฐ๋ ๋ ๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ ์๊ฐ์ ํ์ฌ์์ ๋ณด๋ด๋ ๊ฒ๋งํผ ์์ ์ด ์ซ์ดํ๋ ๋ถ์ผ๋ฅผ ๊ฐ๋ฉด ๊ทธ ์๊ฐ์ด ๊ณ ํต์ค๋ฝ๊ฒ ์ง..(ํด์ฌ์ ๊ธธ๋ก..)
+
+![](https://velog.velcdn.com/images/prettylee620/post/6feecb3b-fa1f-408a-ba2d-54cd485f6307/image.png)
+
+๋ฌผ๋ก ์ผ ์ ์ผ๋ก ๋ณํ๋ฉด ์์ ์ด ์ข์ํ๋ ๋ถ์ผ๋ ์ซ์ดํ๊ฒ ๋๋ค๊ณ ๋ ํ๋ ํฅ๋ฏธ๊ฐ ์๋ ๊ฒ๊ณผ ์์ ์๋ ๊ฒ์ ๋ค๋ฅผ ๋ฏํ๋คใ
ใ
ใ
+
+์ ๊ทธ๋ฆฌ๊ณ ๋ค์ผ๋ก ๋ฟ๋ฏํจ์ด ์๋ค๋ฉด ์ข์ ์๋..(์ฝ์ง ์๊ฒ ์งใ
ใ
) **๋๋ฆ ์ผ์ ์ ๋๋ก ์์ํ์ง๋ ์์ง๋ง ๊ต์ก์ชฝ์ด๋ผ ์ผํ๋ฉด์ ๋ฟ๋ฏํจ์ ๊ฐ์ ธ๊ฐ ์ ์์๋ฏ**
+
+
+
+๊ทธ๋ฆฌ๊ณ ์์ ์ด ๋ญ๊ฐ ์ค์ํ์ง ์๊ฐํด๋ณด๋ ๊ฒ๋ ์ค์ํ ๋ฏํ๋ค. ์๋ผ๋ฒจ vs ๋์ด๋ ๋ฌผ๋ก ์ง๊ธ ์ทจ์
์์ฅ ์ํ๋ ๊ณ ๋ฅด๋ ๊ฒ๋ ํ๋ค ์ ๋๋ก ๊ฐ์๊ธฐ ํดํ๋์ง๋ง...**(๋ฌผ๋ก ์ฐ๋ด๋ ํฉ๊ฒฉ์ ์ ์์๋ ค์ฃผ๋ ๊ณณ์ด ๋ค์์ง๋ง.. ์กํ๋๋์ ๋ณด๋ฉด ๋์ถ ์ ์ ์์)**
+
+ํ์ฌ์ ๊ฐ์ฅ ์ข์ ์ ์ ์๋ผ๋ฒจ๊ณผ ์ฌ๋์ด ์ข๋ค๋ ๊ฒ..
+
+> ๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก๋ **์ ์
๋๋ si์ ๊ฒฝ์ฐ ์๋ผ๋ฒจ์ด ์ข์์ผ ๊ฐ์ธ์ ์ธ ๊ณต๋ถํ ์ ์์ง ์์๊น..?๋ผ๊ณ ๋๋ ์๊ฐํ๋ค.** ๊ทธ๋ฆฌ๊ณ ํฌ๊ด๋ก ์ผ๊ทผํด๋ ๋๋ ํด๊ฐ๋ ์์ฃผ๋ ๊ณณ์ด ๋ค์๋ผ...ใ
..ใ
+
+### 2. si, sm์ ๊ฐ๋ค๋ฉด ํ์ฌ์ ๋ง์ธ๋๋ ์กํ๋๋์ ๋ณด๋ฉด ํ์ฌ์ ๋ฌธํ๋ฅผ ์ ์๋..
+
+์ผ๋จ ๋ด๊ฐ ์ทจ์
ํ๊ณ ์ถ์๋ ์ชฝ๋ ๊ฒ์๊ฐ๋ฐ์ด์์ ํ์ง๋ง ์ ์
์ธ ์ง๊ธ ์ทจ์
์ ํ์ค๊ณผ๋ ์ด๋์ ๋ ํํํจ..
+
+๊ทธ ์ด์ ๋ก
+
+* ์ฒซ ๋ฒ ์งธ๋ ๊ฒ์ ๊ฐ๋ฐ์ ์ ์
๊ฐ๋ฐ์๋ฅผ ์ ์ ๋ฝ์
+* ๋ ๋ฒ ์งธ๋ ๊ฒ์ ๊ฐ๋ฐ์ ๋ํด ํด ๋ณธ ๊ฒ์ด๋ผ๊ณ ๋ ์ ๋ํฐ ๋ฟ..
+* ์ธ ๋ฒ์งธ๋ ์ข์ง ์์ ๊ฒ์ ์์ฅ\*\*(์์ฆ nc๋ ์ํ์ฌ ์ ๋ฆฌํ๊ณ ์์ต ๋ด๊ธฐ๊ฐ ์ฝ์ง ์๋๋ด)\*\*
+* ๋ค ๋ฒ์งธ ์๋ฌธ์ ์ข์ง ์์ ์๋ผ๋ฒจ..**(์ง์ธ๊ณผ ์ผ๋ณธ๊ฒ์๊ฐ๋ฐ์๋ฅผ ๋ณธ ์ ์๋๋ฐ ์ผ๊ทผ..๋ฐค์์ด ์ง์ง...๐ฅฒ)**
+
+๋ด๊ฐ ๊ฒ์ ๊ฐ๋ฐ์ ํฅ๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฑด ๋ด๊ฐ ํ๊ณ ์๋ ๊ฒ์์ด ์ด๋ป๊ฒ ๊ตฌํ๋๋ ์ง ๊ถ๊ธํด์๊ฐ ํฌ๋ค. ์ผ๋จ ๊ฒ์ ๊ฐ๋ฐ ์ง์์ด ์ ์ผ๋ ๊ทธ๊ฒ๋ถํฐ ๊ณต๋ถํ๊ณ ์๊ฐํด๋ณด๋ ค ํ๋ค.
+
+๊ทธ๋ฆฌ๊ณ
+
+> **ํ์ฌ์ ๋ฌธํ์ ๋น์ ์ ์ดํด**ํ๋ฉด ํด๋น ํ์ฌ๊ฐ ์์ ์๊ฒ ์ ํฉํ์ง, ๊ทธ ํ์ฌ์ ๊ฐ๋ฐ์๋ ์ด๋ค ์ข
๋ฅ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋์ง๋ฅผ ์ ์ ์๋ค.
+
+si, sm๋ ๋๋ถ๋ถ ๊ทธ์ ๊ณ ๊ฐ์ฌ์ ๋ง์ถ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ์ ํ์ฌ์ ๋ง์ธ๋..?๊ฐ ์ข์์ง๋ฅผ ๋ณด๋ฉด ์ข์ ์๋
+
+### 3. ๋๊ตฌ๋ ๋ค ๋น์ทํ ๊ณ ๋ฏผ์ ํ๋ค. ๋๋ฌด ๊น์ ๊ตด ํ์ง ๋ง์..
+
+![](https://velog.velcdn.com/images/prettylee620/post/9b14ecb5-545b-4415-a307-b27331737156/image.png)
+
+์ต๊ทผ์.. ์
์ฌํ ์ง 2์ฃผ๋ฐ์ ์๋์ง๋ง ์ทจ์
์ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋ **์ปค๋ฆฌ์ด์ ๋ํ ๊ณ ๋ฏผ์ค์ด์๋ค...** ๋์ ๊ฒฝ์ฐ ์๋
๋ถํธ์บ ํ๋ฅผ ํ๋ ๋์ค ๊ฐ๋ฐ์ฉ ํธ์ํฐ๋ฅผ ๋ง๋ค์ด์ ๊ณ ๋ฏผ ๋ฑ์ ์ ์ ใ
ใ
ใ
ใ
๋ค์์ ๊ธ์ ์ฐ๋ ๋น์ทํ ๊ณ ๋ฏผ์ ํ๋ ์ฌ๋๋ ์์์ผ๋ฉฐ, ์ฃผ๋ง์ ์ฌ์ด๋ ๋ฒ์ด๋จน๊ณ ๊ด์ฐฎ๋ค๋ ์ฌ๋๋ ์์๋ค.
+
+> ๋๋ MBTI๊ฐ INFP์ธ๋ฐ **์ฑ๊ฒฉ ์ ๋์์๋ ์ฑ์ฅ์ ๊ฐ๋งํ์ง๋ง ๋ ๊ธ๋ฐฉ์ง์น๋ค. ํ์ง๋ง ์กฐ๊ธ์ด๋ผ๋ ์ฑ์ฅํ์ง ์์ผ๋ฉด ๋ ์์ ์ ๋ํ ํ์๊ฐ์ด ์จ๋คใ
ใ
ใ
ใ
**(์ง์ง ์ด์ํ ์ฑ๊ฒฉ)
+
+**๋๋ง ์ด๋ฐ๊ฐ? ๋ด๊ฐ ๋ฌธ์ ์ธ๊ฐ?๋ผ๋ ์๊ฐ**๊ณผ ํ์ฌ์์ ๋ ์์ ์ ๋๋ฌด ์์๋ณด์ด๊ณ ๊ณ ๋ฏผ์ด ๋ง์๋๋ฐ ๋น์ทํ ๊ณ ๋ฏผ์ ๊ฐ์ง ์ฌ๋์ด ์๋ค๋ ๊ฒ๋ง์ผ๋ก \*\*๊น๊ฒ ๋
๊ตด ํ๊ธฐ ์ ์ ๋์ฌ ์ ์์๋ค. \*\*
+
+![](https://velog.velcdn.com/images/prettylee620/post/e3a088bd-82c4-4549-9442-0bec80d40b0a/image.png)
+
+์์ ๋ง ๋ถ์กฑํ๊ณ ์์ ๋ง ์ด๋ฐ ๊ณ ๋ฏผ์ ํ ๊ฑฐ๋ผ๋ ์๊ฐ์ ๋ค๋ฅธ ์ฌ๋๊ณผ ์ด์ผ๊ธฐ๋ฅผ ๋๋ ๋ณด๋ฉด ์์ด์ง ๊ฒ์ด๋ค. ๋ ๊น์ ๊ตด ํ๊ธฐ ์ ์ ๋์ฌ ์ ์์ ๊ฒ์ด๋ค.
+
+### 4. ๋ฒ์์ ์์ ์ ์์ ๋ง์ ๋์ฒ๋ฒ์ ์ฐพ์๋ณด์.
+
+![](https://velog.velcdn.com/images/prettylee620/post/a3efc537-e218-4d8f-a9f5-73d8537e83f6/image.png) **(์ถ์ฒ : @PacerKorea)**
+
+ํธ์ํฐ์์ ๋ดค๋๋ฐ ๋์์ด ๋ ๊ฒ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ์ฐ๋ฆฌ๋๋ผ๋ ํนํ ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ, ๋์์์ด ๊ณต๋ถํด์ผ ํ๋ค๋ ๋ง ๋๋ฌธ์ ๋ฒ์์์ด ์์์๋ ์จ ์ฑ๋ก ๊ณต๋ถํ๋ค๊ฐ ์ง์น๊ณ ๋ ์ง์ณ์ ๋์ดํฌ ์ ์๋ ์ํ๊น์ง ๋๋ ๊ฒ ๊ฐ๋ค ๐ญ๐ญ
+
+ํนํ, ๋ถํธ์บ ํ์์ ์งง์ ๊ธฐ๊ฐ์ ๊ณต๋ถํ๋ค ๋ณด๋ ์ฃผ๋ณ์์ ๊ทธ๋ฐ ๋ถ๋ค์ด ๋ง๋ค.. ๋ฟ๋ง ์๋๋ผ ์ค๋ ์ผ ํ์ ๋ถ๋ค๋ ์ง์ณํ๋ ๊ฒ์ ๋ดค๋ค. **(๋๋ ๋ถํธ์บ ํ ๊ธฐ๊ฐ์ ๋์ฌ๋ฒฝ ๋น์ ๊ณต์๋ถ์ ๋ฒ์์ ์ฃผ๋ง๋ค ์์์..)**
+
+> ๋ฒ์์์ด ์์ฃผ ์ค๋ ๊ฒ๋ณด๋ค๋ ์์ ๋ ์์ ๋ง์ ๋์ฒ๋ฒ์ผ๋ก **์์ ํ ์ด๊ฒจ๋ด์ง๋ ๋ชปํ๋๋ผ๋(๋๋ถ๋ถ ๋ฒ์์์ ๊ฐ์ง๊ณ ์ฐ๋ค๊ณ ํจ) ๊ทธ๋๋ ๋ค์ ์ผ์ด ์ค ์ ๋์ ํ์ ํด์ํ๋ฉด์ ๋ง๋๋ ๊ฒ ๋ซ์ง ์์๊น?**
+
+![](https://velog.velcdn.com/images/prettylee620/post/f42a310b-be74-4c10-9cdb-2d79f693de59/image.png)
+
+### 5. ์ํ๋ ํ์ฌ ํ์
์ ํน์ ํ์
์๋ค ์ปคํผ์ฑ ์ต๋ ํ์ฉํ๊ธฐ(feat. ์ฒซ ์ปคํผ์ฑ ํ๊ธฐ)
+
+![](https://velog.velcdn.com/images/prettylee620/post/9cda2dc2-dd88-45dd-bd38-bf63c45215c6/image.png)
+
+์ด๋ฒ์ฃผ ๊ธ์์ผ์ ํธ์น 3๋ถ๊ณผ ์ปคํผ์ฑ๊ณผ ์นผ๊ตญ์์ฑ์ ํ๊ฒ ๋์๋ค. 1๋ถ์ ๋๋ ๊ฐ์ ์ ์
(๋ถ์ผ๋ ๋ค๋ฆ)๋ณด์์ชฝ 2๋ถ์ ๋๊ธฐ์
๊ฐ๋ฐ์์ ๋งค๋์ (๋ ๋ถ์ ํ์ฌ๋ ๋ค๋ฆ)
+
+ํ์ฌ ๋๋๊ณ `์นผ๊ตญ์์ง`์์ ๋จผ์ ๋ง๋๊ฒ ๋์์ผ๋ฉฐ, ์นผ๊ตญ์๋ฅผ ๋จน๊ณ 2์ฐจ๋ก ๋ฐ๋ก ์ ์นดํ๋ฅผ ๊ฐ๊ฒ ๋์๋ค. ์นดํ๊ฐ์ ๋ ๋ถ์ด ๋ช
ํจ์ ์ฃผ์
จ๋ค..
+
+๋๊ฒ ๋ง์ ์ด์ผ๊ธฐ๋ฅผ ๋๋๊ณ ๋ฌธํ์ ๋ํด์๋ ๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ **๋ด๊ฐ ์์ง ์๋ ์ธ๊ณ๋ ์ข๊ตฌ๋..ใ
ใ
ใ
ใ
ใ
์ค์ ํ์
์ ์จ๋ณด์ ์คํ์ ๋ํด์ ๋ณด์ฌ์ฃผ์
จ๋๋ฐ ํ์ต... ๊ต์ฅํ ๋ง์๋ค. ๋ฐ์ ๋ด๊ฐ ์ฒ์ ๋ณด๋ ๊ฒ๋ค ใ
ใ
ใ
ใ
..**
+
+๊ทธ๋ฆฌ๊ณ ํ์ฌ ๊ธฐ์
์ ์ฒด๊ณ, ์ง๊ธ ๊ธฐ์
๋ค์ ์ํ ๋ฑ๋ ์๊ฒ ๋๊ณ ์ด๋ค ๋ถ๋ถ์ด ์ค์ํ์ง.. ์ค์ ๋๊ธฐ์
์์๋ log๊ฐ ๊ฐ๋ง์์ DBMS๋ก ์๋ผ์ ํ๋ก์ ์ด๋ค๋ ๊ฒ, ๋ณด์์ชฝ์ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๊ทธ๋ฆฌ๊ณ ํ ๊ฐ์ง ๊ถ๊ธํ ๊ฒ์ ์ฌ์ญ์ด๋ดค๋ค.
+
+> ๐ค "ํ์ฌ ๊ณต๊ณ ๋ฅผ ๋ณด๋ฉด ๋ฅํตํจ์ด๋ผ๊ณ ์ ํ์์์์ ๋ฅํตํจ์ ๊ธฐ์ค์ด ๋ญ๊น์?" ๐ณ"๋ฅํตํ๊ฒ ํ ์ ์๋ ์ฌ๋์ ๊ฑฐ์ ์๋ค. ๋ค๋ง ์ธํฐ๋ท์ ๋์์๋ ๊ฒ๋ค์ ์๊ณ ๊ฑฐ๊ธฐ์ ๊ธฐ์
์์ ์ํ๋ ๊ฒ์ ์กฐ๊ธ ์๊ณ ์๋ค๋ฉด ๋ฝํ๋ ๊ฑฐ๋ค. ์ค์ ๋ก ์ฝํ
์์ ๊ฒ๋ ๋ฅํตํ ์ฌ๋์ด ์์๋๋ฐ ๋ฉด์ ์ ๋ณด๋ ๊ทธ๋ฐ ์ด๋ก ์ ์ง์์ ์ ๋ฌดํ๋๋ผ"
+
+๊ฑฐ๊ธฐ๋ค ์๊ฐ๋ณด๋ค.. ํธ์น๋ถ๋ค ์ค์ ๋๋จํ ๋ถ๋ค์ด ๋ง๊ตฌ๋..๋ฅผ ๋๋ใ
ใ
ใ
ใ
ใ
ใ
ใ
ใ
ํธ์ํฐ์ ๊ฐ๋ฐ ๊ณ ์๋ถ๋ค์ด ๋๋ฌด ๋ง๋ค.. ํธ์ํฐ ๊ฐ์ถ..ใ
ใ
ใ
ใ
ใ
ใ
+
+์ฌํด ์ปคํผ์ฑ ๋ค์ํ๊ฒ ๋ง๋ ๋ณผ ์์ ์ด๋ค..
+
+### 6. ์๋ฒฝํ์ง ์์๋ ๋๋ค.
+
+> ์๋ฒฝํจ์ ๋ชฉํ๋ก ํ์ง ์๋๋ค. ๋นจ๋ฆฌ ์์ํ๊ณ ์ค๊ฐ์ค๊ฐ ํผ๋๋ฐฑ์ ๋ฐ๋ ๊ฒ์ด ์ค์ํ๋ค.
+
+๋ฐฐ์์ผ ํ ๊ฒ์ ๋ง๊ณ .. ์ธ์ธ๊ฑด ๋ง๊ณ ใ
ใ
ใ
ใ
ใ
ใ
ใ
+
+![](https://velog.velcdn.com/images/prettylee620/post/3799d69f-ea9e-4cd2-b30b-d5e4cf084302/image.png)
+
+ํ์ง๋ง ์ด์ฐจํผ ์ฅ๊ธฐ์ ์ด๊ธฐ์ ์๋ฒฝํจ๋ณด๋ค๋ ์ฒ์ฒํ ๋์๊ฐ์ ๋ชฉํ๋ก ์ก์...
+
+![](https://velog.velcdn.com/images/prettylee620/post/d5059422-313a-4f1b-9d51-dd806b85acbf/image.png)
+
+ํธ์ํฐ์์ ๋๋ ๊ธ์ธ๋ฐ ๊ทธ๋ ๋ค๊ณ ํจ ์ฐธ๊ณ ํ๋ผ๊ณ ๊ฐ์ ธ์ด
+
+### 7. ๊ฐ์ ์ง๋ฌด ์ฌ๋๋ค๊ณผ ๋ํ๋ฅผ ๋๋ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค์.
+
+ํธ์ํฐ๋์ง.. ์คํ์ฑํ
์ด๋ผ๋์ง.. ๋งํฌ๋์ธ์ด๋ผ๋์ง ์๋ฌด๊ฑฐ๋ ๊ด์ฐฎ๋ค... ๋์ ๊ฒฝ์ฐ ์ ๋ฌธ๋๋ผ ์ฌ์ค ์ด ๋ถ์ผ๋ก ๊ฐ ์ฌ๋์ด ํ์ ์ ์ด๋ผ ์ํ๋ฅผ ์ด์ฉํ ์๋ ์์๋ค.
+
+์๊ฐ๋ณด๋ค **ํธ์ํฐ**๋ฅผ ๊ฐ๋ฐ์๋ค์ด ๋ง์ด ์ด์ฉํ๋ค๊ณ ํด์ 8์์ ๊ธ 1\~2๊ฐ ์ ๊ณ ๋์ ํธ์น์ํ๊ณ ๊พธ์คํ ๊ต๋ฅ๋ฅผ ๋๋ ค์๋ค.
+
+
+
+ํธ์ํฐ๋ก ์ธํด ๋ด ๊ฐ๋ฐ์ ์ถ์ ๋ง์ ๋์์ ์ป์๋ค๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๋ค ใ
ใ
ใ
ใ
๐ญ๐ญ ์ง์ง.. ์๋ก๋ ๋ง์ด ๋ฐ๊ณ ๊ณต๊ฐ๋ ๋ง์ด ํ๋คใ
ใ
ใ
์ข์ ๊ธ๋ ๋ง์๋ค. ์ด๋ฐ ๋ํ๋ฅผ ๋๋๊ณ ๊ณต์ ํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค์!!!
+
+### 8. ์ค์ํ ๊ฒ์ ๋น ๋ฅด๊ฒ๊ฐ ์๋ ๋ฐฉํฅ์ฑ
+
+๋ฌผ๋ก ์ด๊ฑด ๊ฐ์ธ๋ง๋ค ์๊ฐ์ด ๋ค๋ฅผ ์๊ฐ ์๋ค. ํ์ง๋ง ๋๋ ๋ฐฉํฅ์ฑ์ ์ก์ผ๋ฉด ์ฐ์งํ๊ฒ ๋๊ฐ๊ธฐ ๋๋ฌธ์..(์ฌ์ค ๋น ๋ฅด๊ฒ๊ฐ ์๋จ ใ
ใ
ใ
)
+
+์์ง ์
์ฌํ ์ง ํ๋ฌ๋ ์๋๊ณ ๋ช ๋ฌ ๊ฐ์ ๋ฐฉํฅ์ฑ์ ๋ํด ๊ณ ๋ฏผํ๋ฉด์ ๊ณต๋ถํด๋ณด๊ณ ์ ํ๋ค!!!
+
+### 9. ๊ถ๊ธํ๋ค๋ฉด ์ฐ๋จน์ด๋ผ๋ ์ง์ ํด๋ณด์.
+
+์ปคํผ์ฑ์์ ์์ฆ ๊ธฐ์
๋ค์ด ๋ฌ์คํธ๋ก ๋ง์ด ๋ฐ๊พธ๊ณ ์๋ค๋ ์์์ ๋ค์๋ค..c++, c#๋ ๋ฌ์คํธ(Rust)๋ก ๋ง์ด ๋ฐ๊พธ๊ณ ๊ธฐ์
์์ ์ฐ๋ ์ฌ๋์ด ๋ง์ด ๋์ด๋๊ณ ์๋ค๊ณ ..
+
+๊ทธ๋์ ์ฃผ๋ง์ ์ผ๋จ Rust์ ๋ํด ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ IDE ํด์ด๋ ์ปดํ์ผ๋ฌ๋ง ์ค์นํ๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/458afe51-fce4-481c-83f3-d2b24cb50568/image.png)
+
+์ฐ๋จน์ ํด๋ณด๊ณ ๋๋ ๋ง๋์ง ํ๋จํด์ผ ๊ฒ ๋ค.
+
+> ์ฌ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ ์ฌ์ดํธ : [๋ฐ๋ธํด๋ฆฌ์ค](https://devfolio.kr/)
+
+๋ชจ๋ ๊ฐ๋ฐ์, ์ง์ฅ์ธ, ์ทจ์ค์, ๋ํ์ ๋ชจ๋ ํ์ดํ
!!!
+
+> [VELOG ๋ฒ์ ](https://velog.io/@prettylee620/%EC%9A%94%EC%A6%98-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%8F%85%EC%84%9C-%EC%9A%94%EC%95%BD-%EB%B0%8F-%EA%B0%9C%EC%9D%B8%EC%A0%81%EC%9D%B8-%EC%83%9D%EA%B0%81)
+
+
diff --git "a/developLog/book/learn-errors/_ 1\354\236\245 \354\227\220\353\237\254\352\260\200 \354\231\234 \353\254\264\354\204\234\354\232\270\352\271\214__.md" "b/developLog/book/learn-errors/_ 1\354\236\245 \354\227\220\353\237\254\352\260\200 \354\231\234 \353\254\264\354\204\234\354\232\270\352\271\214__.md"
new file mode 100644
index 0000000..64fd8da
--- /dev/null
+++ "b/developLog/book/learn-errors/_ 1\354\236\245 \354\227\220\353\237\254\352\260\200 \354\231\234 \353\254\264\354\204\234\354\232\270\352\271\214__.md"
@@ -0,0 +1,226 @@
+---
+description: ์ฌ๋๋ค์ด ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ณด๊ณ ๋ ๋์ด๊ฐ๊ฑฐ๋ ์๋ฌ๋ฅผ ๋ฌด์์ ํ๋ ์ด์ ๊ฐ ๋ญ๊น?
+---
+
+# 1์ฅ ์๋ฌ๊ฐ ์ ๋ฌด์์ธ๊น?
+
+> ์ฝ๋๊ฐ ์๋ํ์ง ์๋ ์ํฉ์ ๋ฐ์ํ๋ ์๋ฌ๋ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค. ์๋ฌ๋ฅผ ์ฝ๋ ๊ฒ๋ง์ผ๋ก๋ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ ์์ธ ํ์
์ด ํ์ํ ๋ฌธ์ ๋ค.\
+>
+
+## 1. ์๋ฌ๋ฅผ ์ฝ์ง ์๊ฒ ๋๋ ์ด์
+
+### 01. ์ด์ 1 : ์๋ฌ๊ฐ ์์ด๋ผ์
+
+์๋ฌ์ ๋ํด์๋ ์์ ์ด ์๋ ์ฌ๋๋ ๋ง๋ค. ์๋ฌ๋ฅผ ๋ํ๋ ๋ง์๊ฐ์ง์ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค. ์๋ฌ๋ฅผ ์ฝ์ง ์๊ฒ ๋๋ ์ด์ ๋ ๊ฐ์ฅ ํฐ ๊ฒ์ด ์๋ฌ๊ฐ ์์ด๋ก ํ๊ธฐ๋๊ธฐ ๋๋ฌธ\
+
+
+> ํธํ๊ฒ ์๋ฌ๋ฅผ ์ฝ์ ์ ์๋ ํฌ์ธํธ๋ฅผ ์ฐพ๊ธฐ!
+
+* ์ฝ๋ ์์ด ์ ์ ๊ฒ์ ๋ฐ๋ก๋ฐ๋ก ์ฝ์\
+
+
+#### 1) ๊ฐ๋จํ ๋ฌธ๋ฒ ์ง์๋ง ์์ผ๋ฉด OK
+
+> ์์ด๊ฐ ๋ฅ์ํ์ง ์์ ์ฌ๋์ด๋ผ๋ฉด ์ผ์ ํํ ์์ค์ ์์ด๋ฅผ ๋น์ฅ ์ตํ๋ ๊ฒ์ ์ด๋ ต์ง๋ง ์๋ฌ ๋ด์ฉ์ ์ฝ๋ ๊ฒ์ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์๋ค๋ ๊ฒ!
+
+\
+์๋ฌ๋ ๋ฌธ์ฅ์ ํ์์ด ์ ํด์ ธ ์์ผ๋ฏ๋ก ์ฌ์ฉํ๋ ๋จ์ด๋ ํ์ ์ ์ด๋ค.
+
+```
+X is not definded
+```
+
+define =์ ์ํ๋ค๋ผ๋ ์๋ฏธ ์ด๋ฉฐ, is not defied๋ be๋์ฌ + not(๋ถ์ ) + ๊ณผ๊ฑฐ๋ถ์ฌ์ธ ์๋ํ์ ๋ถ์ ๋ฌธ์ผ๋ก ์ ์๋์ด ์์ง ์์ ์ํ๋ฅผ ์๋ฏธ\
+
+
+> ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์ฅ์ ์ฝ์ ๋๋ ์ฃผ์ด์ ์ ์ด๋ฅผ ํ์ธํด์ผ ํ๋ค.
+
+\
+๋จผ์ , ๋ฌธ๋ฒ์ ์ง์คํ์ฌ ๋ฉ์์ง์ ์๋ฏธ๋ฅผ ํ์ธํ์
+
+#### 2) ์ฃผ์ด๊ฐ ์๋ต๋ ์ผ์ด์ค
+
+```
+Cannot read properties of null
+```
+
+null ์์ฑ์ ์ฝ์ ์ ์๋ค.\
+
+
+1. ์ ์ด : Cannot read
+2. ์ฃผ์ด : The program
+
+> ๋๋ถ๋ถ ์๋ฌ์ ์ฃผ์ฒด๋ ํด๋น ํ๋ก๊ทธ๋๋ฐ ์์ฒด๋ฅผ ์๋ฏธ ์ฆ, The programm์ ๋ถ์ผ ๊ฒ
+
+```
+The programm cannot read properties of null.
+```
+
+์ด์ ๊ฐ์ด ์๋ฌ์ ์ฃผ์ด๊ฐ ํ๋ก๊ทธ๋จ ์์ฒด์ ์์คํ
์ ์๋ฏธํ๋ ๊ฒ์ด ๋ถ๋ช
ํ ๋๋ ์ฃผ์ด๊ฐ ์๋ต๋๋ฉฐ, ์์ด ๋ฌธ๋ฒ์ ํน์ง์ ์ฃผ์ด๋ฅผ ์ ์ผ ์์ ์ถ๊ฐํ๋ฉด ๋๋ค.\
+
+
+#### 3) ๊ฐ๋จํ ํํ์ ์ฌ์ฉํ๋ ์ผ์ด์ค(๋ช
์ฌ๊ตฌ๋ง์ ์ฌ์ฉ)
+
+> ์๋ฌ ๋ฉ์์ง์๋ ์ฃผ์ด์ ์ ์ด๊ฐ ๋ชจ๋ ์๋ต๋ ํํ๋ ์๋ค.
+
+```
+Invalid array length
+```
+
+* Invalid = ์ ํจํ์ง ์์
+* array length = ๋ฐฐ์ด์ ๊ธธ์ด
+
+\
+๋ช
์ฌ๊ตฌ๋ง ์กด์ฌํ๊ณ , ์ฃผ์ด์ ์ ์ด๋ง ์์ด์ ๋ถ์น์ ํ๊ฒ ๋ณด์ผ ์ ์์ผ๋ ์ด์ ๊ฐ์ ํํ์ด ๋ง๋ค๋ ๊ฒ..\
+
+
+> ์ ํจํ์ง ์์ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ฌ์ฉํ ์ ์๋ค.
+
+```
+Unexpected token '['- ์์ํ์ง ๋ชปํ ํ ํฐ '['missing ) after argument list- ์ธ์ ๋ฆฌ์คํธ ๋ค์ )๊ฐ ์์
+```
+
+
+
+#### 4) ์์ฃผ ์ฌ์ฉํ๋ ๋จ์ด์ ํ๋ก๊ทธ๋๋ฐ ํน์ ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ๋จ์ด
+
+> ์๋ฌ ๋ฉ์์ง์๋ ์ผ๋ฐ์ ์ธ ๋จ์ด ์ด์ธ์๋ ํ๋ก๊ทธ๋๋ฐ์์ ๊ณ ์ ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ๋จ์ด๊ฐ ์กด์ฌํ๋ค. ์ด ๋จ์ด๋ค์ ์ฌ์ ์ ์๋ฏธ๋ฅผ ์ฐพ์๋ด๋ ์ผ๋ฐ์ ์ธ ์๋ฏธ๋ง์ผ๋ก ์ดํดํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ด ์๋ค. ์ด๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ฉ์ด๋ก ์๋ฏธ๋ฅผ ์ดํดํด์ผ ํจ
+
+| ์์ฃผ ๋์ค๋ ๋จ์ด | ์๋ฏธ |
+| ------------------- | ----------- |
+| valid/invalid | ์ ํจํ/์ ํจํ์ง ์์ |
+| expected/unexpected | ๊ธฐ๋ํ/๊ธฐ๋ํ์ง ์์ |
+| defined/undefined | ์ ์๋/์ ์๋์ง ์์ |
+| declared/undeclared | ์ ์ธ๋/์ ์ธ๋์ง ์์ |
+| reference | ์ฐธ์กฐ |
+| require | ํ์ํ |
+| deprecated | ์ฌ์ฉ๋์ง ์๋ |
+| expired | ๋ง๋ฃ๋ |
+| apply | ์ ์ฉํ๋ค |
+| deny | ๊ฑฐ๋ถํ๋ค |
+| permission | ํ๊ฐ |
+| range | ๋ฒ์ |
+| missing | ๋ณด์ด์ง ์๋(๋น ์ง) |
+
+| ๋จ์ด | ํ๋ก๊ทธ๋๋ฐ ๊ณ ์ ์ ์๋ฏธ |
+| ---------------------- | ------------ |
+| function/argument | ํจ์/์ธ์ |
+| variable/constant | ๋ณ์/์์ |
+| object/property/method | ๊ฐ์ฒด/์์ฑ/๋ฉ์๋ |
+| expression/statement | ์/๋ฌธ |
+| operator/operand | ์ฐ์ฐ์/ํผ์ฐ์ฐ์ |
+| token | ํ ํฐ |
+| initializer | ์ด๋์
๋ผ์ด์ |
+| mutable/immutable | ๋ณํ ์ ์๋/๋ถ๋ณ์ |
+| iteration/iterable | ๋ฐ๋ณต/๋ฐ๋ณตํ ์ ์๋ |
+| assignment | ํ ๋น |
+
+### 02. ์ด์ 2 : ๊ธธ์ด์ ์ฝ๊ธฐ๊ฐ ์ด๋ ค์
+
+```
+ReferenceError; nickname is not defined ย at fn3 (/Users/naera/section-1/app.js:14:3) ย at fn2 (/Users/naera/section-1/app.js:10:3) ย at fn1 (/Users/naera/section-1/app.js:6:3) ย at /Users/naera/section-1/app.js:18:16 ย at Layer.handle [as handle.request] (/Users/naera/section-1/p ย nodejnodules/express/lib/router/layer.js:95:5) ย at next (/Users/naera/section-l/node.modules/express/lib/p ย router/route.j s:144:13) ย at Route.dispatch (/Users/naera/section-1/node_modules/p ย express/lib/router/route.js:114:3) ย at Layer.handle [as handle.request] (/Users/naera/section-1/p ย node_modules/express/lib/router/layer.js:95:5) ย at /Users/naera/section-1/node_modules/express/lib/router/p ย index.js:284:15 ย at Function.process_params (/Users/naera/section-1/p ย nodejnodules/express/lib/router/index.js:346:12)
+```
+
+> ๊ธด ์๋ฌ ๋ฉ์์ง์์ ์ฃผ์ํด์ ์ฝ์ด์ผ ํ ๋ถ๋ถ์ ๋๋ต 2\~3ํ ์ ๋๋ค.
+
+\
+์๋ฌ๋ฅผ ๊ตฌ์ฑํ๋ ์ธ ๊ฐ์ง ์์
+
+1. ์๋ฌ์ ์ข
๋ฅ : Uncaught ReferenceError
+2. ์๋ฌ ๋ฉ์์ง : nickname is not defined
+3. ์คํ ํธ๋ ์ด์ค
+
+\
+์ ์ฌ์ง์์๋ ๋จ ๋ ํ์ ๋ฉ์์ง๋ง ์ฝ์ผ๋ฉด ๋๋ค.
+
+```
+ReferenceError : nickname is not definedat fn3 (/Users/naera/section-1/app.js:14:3)
+```
+
+์ฐธ์กฐ ์๋ฌ : nickname์ด ์ ์๋์ด ์์ง ์๋ค.\
+
+
+> ์ฆ, ์๋ฌ๋ ์ ๋ถ ์ฝ์ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์. ์ค์ํ ํฌ์ธํธ๋ง ์๋ฉด ์ฝ๊ธฐ ์ฌ์์ง๋ค.
+
+
+
+### 03. ์ด์ 3 : ์ฝ์ด๋ ๋ฐ๋ก ์์ธ์ ํ์
ํ ์ ์์
+
+์๋ฌ๋ ๋ฐ์ํ ์์น์ ๊ทผ๋ณธ์ ์ธ ์์ธ์ด ๋ค๋ฅผ ๋๋ ์๋ค.\
+
+
+> ์๋ฌ๋ ํ์ธํ์ง๋ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋๋ฌด์ง ๋ ์ค๋ฅด์ง ์์ ๋๋ ์์ ๊ฒ์ด๋ค.
+
+\
+์ด๋ฌํ ๊ฒฝํ์ด ๋ฐฉ๋ฒ๋๋ฉด์ ์๋ฌ์ ์์ ์ด ์์ด์ง๊ณ ์๋ฌ๋ฅผ ์ฝ์ง ์๊ฒ ๋๋ ์ฌ๋์ด ๋ง์ ๊ฒ
+
+#### 1) ์๋ฌ์ ๋ฐ์ ์์น์ ๊ทผ๋ณธ์ ์ธ ์์ธ์ด ๋ค๋ฅผ ๋
+
+```
+function hello(user) { | ย console.log('์๋
ํ์ธ์ ${user.nickname} ๋'); .------ ์ฌ๊ธฐ์ ์๋ฌ ๋ฐ์}
+```
+
+\
+์๋ฌ์ ๋ด์ฉ : null ์์ฑ์ ์ฝ์ ์ ์๋ค.(nickname์ ์ฝ์ผ๋ ค๊ณ ํจ)
+
+```
+Cannot read properties of null (reading 'nickname')
+```
+
+\
+์ด ์๋ฌ๋ null์ nickname ์์ฑ์ ์ฝ์ ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ์ ์ ์๋ค. ์ฝ๋์์ nickname ์์ฑ์ ์ฝ๋ ๋ถ๋ถ์ ${user.nickname}์ด๋ค.\
+
+
+> ์ฆ, user๊ฐ null์ด ๋์ด๋ฒ๋ฆฌ๋ ๊ฒ์ด ๋ฌธ์ ์ด๋ค.
+
+\
+user๋ hello() ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ฏ๋ก ์์ ํด์ผ ํ ๋ถ ๋ถ์ hello() ํจ์๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ\
+๋ค์ํ ์์น์์ ํธ์ถ์ ํ๊ณ ์๋ค๋ฉด, hello(user1), hello(user2) ๋ฑ ์ค์ ์์ธ์ด ๋๋ ๋ถ๋ถ์ ์ฐพ์์ผ ํ๋๋ฐ ๋ฐ๋ก ํด๊ฒฐ์ ํ ์ ๋ ์์ง๋ง, ์๋ฌ๋ฅผ ์์ธํ ์ฝ์ด๋ณด๋ฉด ํจ์จ์ ์ธ ๊ทผ๋ณธ ์์ธ์ ์ฐพ์ ์ ์๋ค.\
+
+
+#### 2) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ์ฝ๋์์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋
+
+๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ๋ชจ์๋ ์ฝ๋์ด๋ค. ๋ค๋ฅธ ์ฌ๋์ด ์์ฑํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋์์ ์์ธ์ด ๋ฐ์ํ๋ฉด ๋์ด๋๊ฐ ์ฌ๋ผ๊ฐ๋ค.\
+
+
+```
+const { Client } = require("pg");const client = new Client({ ย user: "alice", ย password: "password", ย database: "myDb",})๏ผconst connectClient = async () => { ย await client.connect();}๏ผconnectClient();
+```
+
+์๋ฌ
+
+```
+error: password authentication failed for user "alice" ย at Parser.parseErrorMessage (/Users/naera/project/ๅธnode_niodules/pg-protocol/dist/parser.js:287:98) ย at Parser.handlePacket (/Users/naera/project/node_modules/ppg-protocol/dist/parser.js:126:29) ย at Parser,parse (/Users/naera/project/node.modules/ppg-protocol/dist/parser.js:39:38) ย at Socket. (/Users/naera/project/node_modules/ppg-protocol/dist/index.js:11:42) ย at Socket.emit (node:events:513:28) ย at addChunk (node:internal/streanis/readable:324:12) ย at readableAddChunk (nodezinternal/streams/readable:297:9) ย at Readable.push (node:internal/streams/readable:234:10) ย at TCP.onStreamRead (node:internal/strean)_base_coniinons:190:23)
+```
+
+
+
+> ์ค์ ๋ก ์ด ์๋ฌ๋ ์์ ์ด ์์ฑํ ์ฝ๋์์ ์ด๋์ ์์ธ์ด ์๋์ง๋ฅผ ๋ํ๋ด๋ ๋ถ๋ถ์ด ์๋ค.
+
+\
+์๋ฌ๊ฐ ๋ฐ์ํ ๋ถ๋ถ์ 2ํ์ ์ด๋ค ํ์ผ์ด์ง๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฝ๋์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด ์๋ **๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํ ์ ์ ์ ๋ณด์ ํจ์ค์๋๊ฐ ํ๋ฆฐ ๊ฒ์ด ์๋ฌ์ ์์ธ**์ด๋ค.
+
+\
+ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ค ๋ณด๋ฉด ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ์๋ฌ๋ฅผ ๋ง๋ ๋๊ฐ ์๋ค. ๊ทธ๋ ๋ค๊ณ ํด์ ์๋ฌ๋ฅผ ์ฝ์ ํ์๊ฐ ์๋ ๊ฒ์ ์๋๋ค. ์๋ฌ๋ฅผ ์ฝ์ผ๋ฉด ์กฐ๊ธ์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ํํธ๋ฅผ ์ป์ ์ ์๋ค. ์กฐ๊ธ์ฉ ๋ฐ์ ํ๋ค๋ ์๊ฐ์ผ๋ก ์๋ฌ๋ฅผ ๋ํ๋๋ก ํ์\
+
+
+## 2. ์๋ฌ๋ฅผ ํฅํ ๋ง์๊ฐ์ง
+
+### 1) ๊ฐ๋จํ๊ฒ ์๊ฐํ์
+
+> ๋ฐ๋ก ํด๊ฒฐํ ์๋ ์๋๋ผ๋ ํํธ๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค.
+
+\
+์๋ฌ๊ฐ ๋ฐ์ํ๋ ์์ญ๊ณผ ๋์ด๋๊ฐ ๋ค์ํ์ง๋ง, ์๋ฌ๋ฅผ ์ ๋๋ก ํ์ธํ๊ธฐ๋ง ํด๋ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ ๋ง๋ค.\
+
+
+### 2) ์ด๋ ค์ด ์๋ฌ๋ ์ข์ ํ์ต์ ๊ธฐํ
+
+> ์๋ฌ๋ฅผ ๋ง๋ ๋๋ง๋ค ์๋ก์ด ๊ฒ์ ๋ฐฐ์ธ ์ ์๋ค๋ ๋ง์๊ฐ์ง์ ๊ฐ๋ ๊ฒ์ด ์ค์
+
+
+
+### 3) ์๋ฌ๋ฅผ ์ฝ๋ ์คํฌ์ ํญ์ ๋์์ด ๋๋ค.
+
+์๋ฌ๋ ํฌ๋งท์ด ์ ํด์ ธ ์๊ณ ์ข
๋ฅ๋ ์ ํด์ ธ ์๋ค. ์๋ฌ ๋ฉ์์ง๋ฅผ ํ ๋ฒ๋ง ์์ธํ ์ฝ๊ณ ๋ด์ฉ์ ์ดํดํด๋๋ฉด ์ดํ์๋ ๊ฐ๋ฐ์ด ํธํด์ง๋ค.\
+์๋ฌ๋ ๊ฐ๋ฐ์๊ฐ ํจ์จ์ ์ผ๋ก ๋๋ฒ๊น
ํ ์ ์๊ฒ ํด์ฃผ๋ ์๊ตฐ์ด๋ค.\
diff --git "a/developLog/book/learn-errors/_ 2\354\236\245 \354\227\220\353\237\254\353\245\274 \354\236\230 \354\235\275\353\212\224 \353\260\251\353\262\225_.md" "b/developLog/book/learn-errors/_ 2\354\236\245 \354\227\220\353\237\254\353\245\274 \354\236\230 \354\235\275\353\212\224 \353\260\251\353\262\225_.md"
new file mode 100644
index 0000000..b246102
--- /dev/null
+++ "b/developLog/book/learn-errors/_ 2\354\236\245 \354\227\220\353\237\254\353\245\274 \354\236\230 \354\235\275\353\212\224 \353\260\251\353\262\225_.md"
@@ -0,0 +1,187 @@
+---
+description: ํจ์จ์ ์ผ๋ก ์๋ฌ๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ, ์๋ฌ์ ๊ตฌ์ฑ ์์์ ์ข
๋ฅ
+---
+
+# 2์ฅ ์๋ฌ๋ฅผ ์ ์ฝ๋ ๋ฐฉ๋ฒ
+
+## 01. ์๋ฌ์ ๊ตฌ์ฑ์์๋ฅผ ์์๋ณด์
+
+> ์๋ฌ๋ฅผ ์ ์ ์ฝ๊ธฐ ์ํด์๋ ์๋ฌ์ ๊ตฌ์ฑ ์์๋ฅผ ํ์
ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
+
+1. ์๋ฌ์ ์ข
๋ฅ
+2. ์๋ฌ ๋ฉ์์ง
+3. ์คํ ํธ๋ ์ด์ค
+
+### 1. ์๋ฌ์ ์ข
๋ฅ
+
+> ์๋ฌ์ ์ข
๋ฅ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ข
๋ฅ๋ฅผ ํ์
ํ๋ ๊ฒ์ผ๋ก ์๋ฌ์ ๋๋ต์ ์ธ ๋ด์ฉ์ ์ ์ ์๋ค.
+
+1. ReferenceError : ์ฐธ์กฐ ์๋ฌ
+
+* ์กด์ฌํ์ง ์๋ ๋ณ์ ๋ฑ์ ์ฐธ์กฐํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ ์๋ฌ(์ ์ ๋์ด ์์ง ์์ ๊ฒ ์ฐธ์กฐํ ๋)
+* ํด๊ฒฐ ๋ฐฉ์ ์์ธก : ๋ณ์๊ฐ ์ ๋๋ก ์ ์๋์ด ์๋์ง ํ์ธ
+
+```javascript
+let message = "์ฆ๊ฑฐ์ด ๋๋ฒ๊น
";function showMessageO { ย
+ console.log(mesage); - s๊ฐ ํ๋ ๋น ์ ธ ์์
+}showMessage();
+
+```
+
+```
+ReferenceError: mesage is not defined
+```
+
+์ฐธ์กฐ ์๋ฌ: mesage๊ฐ ์ ์๋์ด ์์ง ์์\
+๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋, ์๋ค
+
+if (true) { ย
+ const message = "์ฆ๊ฑฐ์ด ๋๋ฒ๊น
";
+}
+function showMessage() { ย
+ console.log(message); ------ ์๋ฌ์์์ธ
+}
+showMessage();
+
+
+\
+`์ค์ฝํscope๏ผ์ ํจ ๋ฒ์๏ผ`๋ if ๋ฌธ์ ๋ธ๋ก๏ผ{ \~ } ๋ด๋ถ๏ผ์ผ๋ก ํ์ ๋๋ค. ์ด์ ๊ฐ์ด ๋ณ์๊ฐ ์ ์๋์ด ์๋๋ผ๋ ์ค์ฝํ๊ฐ ๋ค๋ฅด๋ฉด ์ฐธ์กฐํ ์ ์์ผ๋ฏ๋ก **ReferenceError**๊ฐ ๋ฐ์ํ๋ค.
+
+> ์ค์ฝํ๋ ๋ณ์์ ํจ์๋ฅผ ์ฐธ์กฐํ ์ ์๋ ๋ฒ์
+
+\
+2\. ArgumentCountError
+
+* ํจ์์ ์ธ์(argument)์ ์(count)๊ฐ ์๋ชป๋ ๊ฒ์ ์๋ฏธ
+* ํด๊ฒฐ ๋ฐฉ์ ์์ธก : ์ ์๋ ํจ์์ ํด๋น ํจ์๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ ํ์ธ
+
+\
+3\. SyntaxError : ๋ฌธ๋ฒ ์๋ฌ
+
+> ํ๋ก๊ทธ๋จ์ ๋ก์ง์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ ์๋๋ฏ๋ก ๋ก์ง์ ํ์ธํ ํ์๋ ์๋ค. ๋ฐ๋ผ์ ํ๊ธฐ ๋ฐฉ์์ ๋ฌธ์ ๊ฐ ์๋ ๋ถ๋ถ์ ์ค์ ์ผ๋ก ์ฐพ์ผ๋ฉด ๋๋ค.
+
+* ์ฝ๋์ ๋ฌธ๋ฒ์ด ์๋ชป๋์์ ๋ ๋ฐ์
+
+```javascript
+function add [a, b] { ย
+ return a + b;
+}๏ผ
+```
+
+```
+SyntaxError: Unexpected token '['
+```
+
+๋ฌธ๋ฒ ์๋ฌ : ์์ํ์ง ๋ชปํ ํ ํฐ \[\
+
+
+4\. TypeError : ํ์
์๋ฌ
+
+* ๊ฐ์ด ๋ถ์ ์ ํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ๋ ๋ฐ์
+* ์์๋ก ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ํ์ธํ ๋ ์ฌ์ฉํ๋ length ์์ฑ์ ๋ฌธ์์ด์ด ์๋ null์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ํด๋น ์๋ฌ๊ฐ ๋ฐ์
+
+```
+"hello".length null.length
+```
+
+```
+TypeError: Cannot read properties of null (reading 'length')
+```
+
+\
+5\. RangeError : ๋ฒ์ ์๋ฌ
+
+* ํ์ฉ๋์ง ์์ ๋ฒ์์ ๊ฐ์ ํจ์๋ก ์ ๋ฌํ ๋ ๋ฐ์
+
+> ์ด ์๋ฌ๊ฐ ๋ฐ์ํ ๋๋ ์ธ์์ ๊ฐ์ ํ์ธํ์
+
+\
+์๋ฌ์ ์ข
๋ฅ๋ฅผ ์๋ฉด ์ด๋ป๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์ ์ ์์ผ๋ฏ๋ก ์ด๋ป๊ฒ ๋์ฒํ ์ง ์์ํ ์ ์๋ค.\
+
+
+#### 1) ์๋ฌ์ ์ข
๋ฅ๋ฅผ ์๋ฉด ์์ธ๊ณผ ๋์ฑ
์ ์์ธกํ๊ธฐ ์ฝ๋ค.
+
+> ์๋ฌ๊ฐ ๋ฐ์ ์๋ง๋ค ์กฐ๊ธ์ฉ ์ง์์ ์์๊ฐ์.
+
+\
+
+
+### 2. ์๋ฌ ๋ฉ์์ง
+
+> ์ด ๋ถ๋ถ์ ์๋ฌ๋ฅผ ์ฝ์ง ์๊ณ ์๋ ํจ์จ์ ์ผ๋ก ๋ฌธ์ ํด๊ฒฐ ๋ถ๊ฐ
+
+\
+๋จ์ด์ ์๋ฏธ๋ฅผ ์ฐพ์๋ณด๊ณ ๋ฉ์์ง์ ์๋ฏธ๋ฅผ ํ์คํ ์ดํดํ๋๋ก ๋
ธ๋ ฅํ๋ ๊ฒ์ด ์๋ฌ๋ฅผ ํด๊ฒฐํ๋ ๋น ๋ฅธ ๊ธธ\
+
+
+### 3. ์คํ ํธ๋ ์ด์ค(stack trace)
+
+> ์คํ ํธ๋ ์ด์ค๋ ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ์๋ฌ ๋ฐ์๊น์ง์ ํ๋ฆ์ ๋ํ๋ด๋ ๊ฒ, ์์น๋ฅผ ์๋ ค์ฃผ๋ ์ญํ
+
+#### 1) ์คํ ํธ๋ ์ด์ค๊ฐ ์๋ ค์ฃผ๋ ๊ฒ
+
+> ์์
์ ํ๋ฆ๊ณผ ์๋ฌ๊ฐ ๋ฐ์ํ ์์น๋ฅผ ์๋ ค์ค๋ค.
+
+```
+์ฒ๋ฆฌ A => ์ฒ๋ฆฌ B => ์ฒ๋ฆฌ C(์๋ฌ ๋ฐ์) ์๋ฌ ๋ฐ์ํ๊ธฐ ๊น์ง์ ํ๋ฆ => ์ฒ๋ฆฌ D
+```
+
+#### 2) ์คํ ํธ๋ ์ด์ค๋?
+
+> ํ๋ก๊ทธ๋จ ๋ด ํจ์๊ฐ ์ด๋ค ์์๋ก ํธ์ถ๋๋์ง ํ์ํ๋ ์ด๋ ฅ ์ ๋ณด
+
+* ํธ๋ ์ด์ค(trace) : ์์ทจ, ๊ธฐ๋ก
+* ์คํ(stack) : ์์ด๋ ๊ฒ
+
+\
+์๋ ์คํ ํธ๋ ์ด์ค๋ ๋ง ๊ทธ๋๋ก ์คํ์ ์์ธ ๊ฒ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ํจ์๊ฐ ํธ์ถ๋๋ ๋ฐ๋๋ก ๋ํ๋๋ค.\
+ํจ์ ํธ์ถ ์์๋๋ก ์์์ ์์ด๋ฏ ์์๋๋ก ์คํ์ ์์ธ๋ค. ์ด๊ฒ์ ๊บผ๋ด์ ๋ถ๋ฌ์ค๋ ๊ฒ ์คํ ํธ๋ ์ด์ค
+
+> ์ฆ, ๋ง์ง๋ง์ ํธ์ถ ๋ ๊ฒ์ด ์คํ ํธ๋ ์ด์ค ๊ฐ์ฅ ์์ค์ ํ์ ๋ ๋ค๋ ๊ฒ!(ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฐ๋ผ ๋ค๋ฆ ๋ณดํต ์๋ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ทธ๋ผ)
+
+#### 3) ์คํ ํธ๋ ์ด์ค์ ๊ตฌ์ฒด์ ์ธ ์
+
+```
+ ย ย ย < meta charset="UTF-8" /> ย ย Sainple ย ย Stack trace
ย
+```
+
+\
+์คํ ํธ๋ ์ด์ค์ ์ฒซ ๋ฒ์งธ ํ์๋ ์ต์ข
์ ์ผ๋ก ์๋ฌ๊ฐ ๋ฐ์ํ ์ฅ์์ธ ํจ์ f3์ ์ ๋ณด๊ฐ ํ์๋๋ค.\
+sample.html:19:21 ์ ์๋ฌ๊ฐ ๋ฐ์ํ ํ์ผ๋ช
๊ณผ ์๋ฌ๊ฐ ๋ฐ์ํ ์์น์ ํ๊ณผ ์ด์ ๋ฒํธ๋ฅผ ํ์
+
+#### 4) ๋จผ์ ์ต์ข
์ง์ ์ ํ์ธํ์.
+
+> ์คํ ํธ๋ ์ด์ค๋ ์ต์ข
์ง์ ์์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ฏ๋ก ๋จผ์ ํด๋น ๋ถ๋ถ์ ์ดํด๋ณด๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
+
+\
+๋๋ถ๋ถ์ ์๋ํฐ์๋ ํ๊ณผ ๋ฌธ์์ ์๋ฅผ ์ง์ ํ๋ฉด ํด๋น ์์น๋ก ์ ํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์คํ ํธ๋ ์ด์ค์ ๋์ ์๋ ํ๊ณผ ๋ฒ์งธ๋ฅผ ์
๋ ฅํ๋ฉด ์ฐพ๊ธฐ๊ฐ ํธํ๋ฉฐ, ์์
์ ์ข ๋ ํจ์จ์ ์ผ๋ก ์งํํ ์ ์๋ค.\
+์ฐธ๊ณ ๋ก ํ์ ์ฒซ ๋ฒ์งธ๋ถํฐ ๋ฌธ์๋ฅผ ์
๋ ๊ณต๋ฐฑ๋ ํ๋์ ๋ฌธ์๋ก ์ธ์\
+
+
+> ๋ชจ๋ ํ์ ์ฝ์ผ๋ ค๊ณ ํ์ง ๋ง๊ณ , ์ต์ข
์ง์ ์ ์ฒซ ๋ฒ์งธ ํ๋ถํฐ ์ฝ์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํ์
ํ ์ ์๋ค.
+
+#### 5) ์ต์ข
์ง์ ๋ง์ผ๋ก๋ ํด๊ฒฐํ ์ ์์ ๋
+
+```
+function hello(user) { ย console.log(`์๋
ํ์ธ์ ${user.nickname} ๋');}
+hello(userl);hello(user2); โ1 ์๋ฌ์ ์์ธ์ด ๋๋ ์์น๊ฐ ์ฌ๋ฌ ๊ณณ ์กด์ฌhello(user3);
+```
+
+์๋ฌ์ ์์ธ
+
+```
+Uncaught TypeError: Cannot read properties of null (reading `nickname`) ย at hello (sample.html: 15:35) ย at sample.html:20:7
+```
+
+์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ hello ํจ์์ ์ ๋ฌํ๋ ์ธ์์ธ user๊ฐ null์ด ๋๋ ๊ฒ์ ๋์ฒํด์ผ ํ๋ค.\
+์ฆ, ์คํ ํธ๋ ์ด์ค๋ฅผ ๋ชจ๋ฅด๋ฉด useri, user2, user3์ ๋ชจ๋ ํ์ธํด์ผ ํ๋ค.\
+๊ทธ๋ฌ๋, ์คํ ํธ๋ ์ด์ค๋ ์๋ฌ์ ์์ธ์ด ๋๋ ์์น๋ฅผ ์ ์ ์๋๋ฐ, ๋ ๋ฒ์งธ ํ์ ์ดํด๋ณด๋ฉด 20:7์ด ํ์๋์ด ์์ผ๋ฏ๋ก, ์ด ์์น์์ ํธ์ถํ๋ hello ํจ์๊ฐ ์์ธ์ด ๋๋ ๊ฒ์ ์ ์ ์๋ค.\
+
+
+> ์คํ ํธ๋ ์ด์ค๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด ํจ์จ์ ์ผ๋ก ์์ธ์ ์ฐพ์ ์ ์๋ค.
+
+
+
+### 4. ์คํ ํธ๋ ์ด์ค์ ํ๋ฆ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ง๋ค ๋ค๋ฅผ๊น?
+
+๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์คํ ํธ๋ ์ด์ค๊ฐ ์๋๋ถํฐ ์๋ก ์ด๋ํ๋ค ๋ฐ๋ผ์ ์ ์ผ ์์ชฝ์ ๋ณด๋ฉด ์๋ฌ์ ์์น๋ฅผ ํน์ ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ํ์ด์ฌ์ ์ด์ ๋ฐ๋๋ก ์ค๋ ฅํ๋ค. ํ์ด์ฌ์์ ์๋ฌ์ ์์ธ์ ์ฐพ๊ธฐ ์ํด์๋ ์คํ ํธ๋ ์ด์ค์ ๊ฐ์ฅ ์๋๋ฅผ ํ์ธํด์ผ ํ๋ค\
diff --git "a/developLog/book/learn-errors/_ 3\354\236\245 \355\232\250\354\234\250\354\240\201\354\234\274\353\241\234 \354\227\220\353\237\254\354\235\230 \354\233\220\354\235\270 \354\260\276\352\270\260_.md" "b/developLog/book/learn-errors/_ 3\354\236\245 \355\232\250\354\234\250\354\240\201\354\234\274\353\241\234 \354\227\220\353\237\254\354\235\230 \354\233\220\354\235\270 \354\260\276\352\270\260_.md"
new file mode 100644
index 0000000..c034e49
--- /dev/null
+++ "b/developLog/book/learn-errors/_ 3\354\236\245 \355\232\250\354\234\250\354\240\201\354\234\274\353\241\234 \354\227\220\353\237\254\354\235\230 \354\233\220\354\235\270 \354\260\276\352\270\260_.md"
@@ -0,0 +1,38 @@
+---
+description: ๋๋ฒ๊น
์ ๋ํ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์. ์ด๊ฒ์ด ๋ฐ๋ก ํจ์จ์ ์ผ๋ก ์๋ฌ์ ์์ธ์ ์ฐพ๋ ๋ฐฉ๋ฒ
+---
+
+# 3์ฅ ํจ์จ์ ์ผ๋ก ์๋ฌ์ ์์ธ ์ฐพ๊ธฐ
+
+๋๋ฒ๊น
์ด๋ ์๋ฌ์ ์์ธ์ ํน์ ํ๊ณ ์์ ํ๋ ์์
์ด๋ค. ์ ์ฅ์์ ๋์จ ์๋ฌ๋ฅผ ์ฝ๋ ๊ฒ๋ ๋๋ฒ๊น
์ ํ ๊ฐ์ง๋ผ๊ณ ํ ์ ์๋ค.
+
+## 01. ๋๋ฒ๊น
์ด๋?
+
+> ๋๋ฒ๊น
(debugging)์ด๋ ์๋ฌ์ ์ค์ ์์ธ์ ์ฐพ๊ณ ์์ ํ๋ ์์
์ ๋งํ๋ค. ๋๋ฒ๊น
์คํฌ์ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ํฐ ์ํฅ์ ์ค๋ค.
+
+\
+๋๋ฒ๊ทธ(debug) =ํ๋ก๊ทธ๋จ ๋ด ์๋ฌ๋ฅผ ์๋ฏธํ๋ ๋ฒ๊ทธ(bug) + de(์ ๊ฑฐํ๋ค)
+
+### 1) ๋๋ฒ๊น
์ ํ๋ฆ
+
+์์ธ ์ฐพ๊ธฐ โ ์๋ฌ ์ฝ๊ธฐ โ ์์ธ ํ์
โ ์์ ํ๊ธฐ โ ? โ ์์ธ ํ์
โ ์์ ํ๊ธฐ\
+
+
+> ๊ณผ์ฅํด์ ํํํ์๋ฉด ๋๋ฒ๊น
์ ์๋ฌ์ ์์ธ๋ง ํน์ ํ ์ ์๋ค๋ฉด ์ด๋ฏธ ๋๋ ๊ฒ์ด๋ ๋ค๋ฆ์๋ค.
+
+\
+์๋ฌ๊ฐ ๋ณด์ด์ง ์๊ฑฐ๋ ์๋ฌ๋ฅผ ์ดํดํ ์ ์์ ๋๋ ์๋ค. ์ด๋๋ ํ๋ฆฐํธ ๋๋ฒ๊น
๋ฐฉ๋ฒ๊ณผ ์ด์ง ํ์์ ํ์ฉํ์ฌ ์๋ฌ์ ์์ธ์ ์ฐพ์๋ณผ ์ ์๋ค.
+
+### 2) ํ๋ฆฐํธ ๋๋ฒ๊น
์ ํด๋ณด์
+
+> ํ๋ฆฐํธ ๋๋ฒ๊น
์ ํ๋ฆฐํธ๋ ๋ฌธ์ ๊ทธ๋๋ก ํ๋ก๊ทธ๋จ์ด ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๋ ฅ(print)ํ๋ค๋ ์๋ฏธ๋ก, ๋๋ฒ๊น
์ค ํ๋ก๊ทธ๋จ์ ์ํ๋ฅผ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
+
+\
+๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ๋ณ์๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ ํจ์๊ฐ ์กด์ฌํ๋๋ฐ, ์ด ์ถ๋ ฅ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์์ ๋ณ์์ ๋ด์ฉ์ ํ์ธํ๊ณ ํ๋ก๊ทธ๋จ์ ์ํ๋ฅผ ํด์ํ๋ฉด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์์น ํน์ ๊ฐ๋ฅํ๋ค.
+
+```
+function calcSum(a, b) {console.log('์ธ์์ ๊ฐ : a = ${a} / b = ${b}');const sum = a + b;console.log๏ผ'์ฒ๋ฆฌ ๊ฒฐ๊ณผ : sum = ${suin}'๏ผ;return sum;const sum = calcSumO, 2๏ผ;console.log๏ผ'ํจ์์ ๋ฐํ๊ฐ : ${sum}'๏ผ;
+```
+
+> ํน์ ์์น์ ๋ณ์ซ๊ฐ์ ์ถ๋ ฅํ๋ฉด์ ํ๋ก๊ทธ๋จ์ด ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ํ๋ฆฐํธ ๋๋ฒ๊น
์ ๊ธฐ๋ณธ
+
diff --git "a/developLog/book/onboarding/4/_ \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 _ _3__.md" "b/developLog/book/onboarding/4/_ \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 _ _3__.md"
new file mode 100644
index 0000000..5ff674f
--- /dev/null
+++ "b/developLog/book/onboarding/4/_ \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 _ _3__.md"
@@ -0,0 +1,38 @@
+# ๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 4์ฅ - (3)
+
+## ์ ํ๋ฆฌ์ผ์ด์
๋์ ์ธก์ ์ ์ํ ์งํ ํ์ฉ ๋ฐฉ์
+
+### 1. ํ๋กค๋ก๊ทธ
+
+> `์งํ`๋ฅผ ์ด์ฉํด ์ ํ๋ฆฌ์ผ์ด์
์ด ์ด๋ค ๋์์ ํ๋์ง ์์๋ณด๋ ๊ฒ์ ํ ์ ์๋ค.
+
+#### ๐ ์งํ์ ์ ์ฉ์ฑ
+
+* ์ฟผ๋ฆฌ ์คํ ์๊ฐ์ด ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋์ง, ํ์ ์ ์ฅ๋ ๊ฐ์ ๋ช ๊ฐ์ธ์ง, ๋์คํฌ์ ์ผ๋ง๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ก๋๊ณ ์๋์ง ๋ฑ ์ ํ๋ฆฌ์ผ์ด์
๋์์ ์ธก์ ํ๋ฉด ๋ฌธ์ ๋ฅผ ์ธ์งํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ๋๋ฒ๊น
์๋ ์ ์ฉํ๋ค.
+
+#### ๐ ์งํ์ 3๊ฐ์ง ์ ํ
+
+1. ์นด์ดํฐ(counter)
+
+* `ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ์๋ฅผ ์ธก์ `ํ๋ค.
+* ์บ์ ํํธ ์นด์ดํฐ์ ์์ฒญ ์นด์ดํฐ๋ฅผ ์ด์ฉํ๋ฉด ์บ์๋ฅผ ํ์ฉํ๋ ๋น์จ ๊ณ์ฐํ ์ ์๋ค.
+* ์นด์ดํฐ๋ ๊ฐ์ ์ฆ๊ฐ์ํค๊ฑฐ๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์์ํ ๋ 0์ผ๋ก ๋ฆฌ์
๋๋ ๋์๋ง ์ํํ๋ค.
+
+2. ๊ฒ์ด์ง(guage)
+
+* `ํ๋ ์คํ, ๋งต ํฌ๊ธฐ์ ํต๊ณ๊ฐ ์ ์`ํด์ค๋ค.
+* ํน์ ์์ ์ ๊ธฐ์ค์ผ๋ก ์ธก์ ํ๋ฏ๋ก ๊ฐ์ด ์ฌ๋ผ๊ฐ๊ฑฐ๋ ๋ด๋ ค๊ฐ ์ ์๋ค.
+* ์๋์ฐจ์ ์๋๊ณ๋ ์ฐ๋ฃ๊ณ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
+
+3. ํ์คํ ๊ทธ๋จ(histogram)
+
+* ๊ท๋ชจ์ ๋ฐ๋ผ ์ด๋ฒคํธ๋ฅผ ํน์ ๋ฒ์๋ก ๊ตฌ๋ถ
+* ๊ฐ ๋ฒ์์๋ ํด๋น ๋ฒ์ ๋ด์ ์ด๋ฒคํธ ๊ฐ์ด ๋ฐ์ํ๋ฉด ๊ฐ์ด ์ฆ๊ฐํ๋ ์นด์ดํฐ
+* ์ฃผ๋ก `์์ฒญ ์ฒ๋ฆฌ์ ๊ฑธ๋ฆฐ ์๊ฐ์ด๋ ๋ฐ์ดํฐ ํ์ด๋ก๋ ํฌ๊ธฐ` ๊ฐ์ ์งํ ์ธก์
+
+**๋ฐ์ดํฐ ํ์ด๋ก๋(payload)**
+
+* ์ปดํจํฐ ๋คํธ์ํฌ์ ํต์ ์์ ์ฌ์ฉ๋๋ ์ฉ์ด๋ก, ํจํท์ด๋ ๋ฉ์์ง์ ํฌํจ๋ ์ค์ ์ ๋ณด
+* ๋ค์ ๋งํด, ์ด๋ค ์์
์ ์ํํ๊ธฐ ์ํด `์ ๋ฌ๋๋ ์ค์ ๋ฐ์ดํฐ ๋ถ๋ถ`์ ์๋ฏธ
+* ์๋ฅผ ๋ค์ด, ์น ์์ฒญ์์ ๋ฐ์ดํฐ ํ์ด๋ก๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ ์กํ๋ ์ค์ ๋ฐ์ดํฐ, ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์์ ๋ฐ์ดํฐ ๋ฑ์ ๋งํ๋ค.
+* ๋ฐ์ดํฐ ํ์ด๋ก๋๋ ์ฃผ๋ก ๋ฉํ๋ฐ์ดํฐ(๋ถ๊ฐ ์ ๋ณด)์ ํจ๊ป ์ ์ก๋๋ฉฐ, ํ๋กํ ์ฝ์ ๋ฐ๋ผ ์ด๋ค ํ์์ผ๋ก ๊ตฌ์ฑ๋๋์ง์ ๋ฐ๋ผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ค.
diff --git "a/developLog/book/onboarding/4/_ \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 __1__.md" "b/developLog/book/onboarding/4/_ \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 __1__.md"
new file mode 100644
index 0000000..2dbb1b9
--- /dev/null
+++ "b/developLog/book/onboarding/4/_ \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 __1__.md"
@@ -0,0 +1,643 @@
+# ๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 4์ฅ -(1)
+
+![](https://velog.velcdn.com/images/prettylee620/post/a1ed16d1-5bbd-4eff-928a-5f94ea820cc8/image.png)
+
+## ์ด์ ํ๊ฒฝ์ ๊ณ ๋ คํ ์ฝ๋ ์์ฑ - ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ํ๋ก๋์
ํ๊ฒฝ์ ์์ฐํ ๋ค๋ฅด๋ค.
+
+> ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋์ ์ฝ๊ณ ์ ๋ฆฌํ๋ ๊ธ์ด๋ฉฐ, ํน์ ๋ฌธ์ ๊ฐ ๋๋ฉด ์ญ์ ํ๊ฒ ์ต๋๋ค.
+
+### 1. ๋ค์ด๊ฐ๊ธฐ
+
+* ์ค ์ธ๊ณ์ ์ฌ์ฉ์๋ ์์ธก์ด ์ด๋ ค์ฐ๋ฉฐ, ๋คํธ์ํฌ๋ ๋ฏฟ์ ์ ์๋ค.
+* ํ๋ก๋์
์ํํธ์จ์ด๋ ์ง์์ ์ผ๋ก ๋์ํด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ด์ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํด์ผ ์์ํ์ง ๋ชปํ ์ํฉ์ ๋์ฒํ ์ ์๋ค.
+
+#### ๐ ์ด์ ๊ฐ๋ฅํ ์ฝ๋
+
+* ๋ณดํธ ์ฅ์น, ๋ถ์ ์ฅ์น, ์ ์ด ์ฅ์น๊ฐ ๋ด์ฅ๋ ์ฝ๋๋ฅผ ๋งํ๋ค.
+* **์์ ํ๊ณ ํ๋ณต์ฑ ์๋ ์ฝ๋ฉ ๊ธฐ๋ฒ**์ ์ด์ฉํด ๋ฐฉ์ด์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํด์ ์์คํ
์ ๋ณดํธํด์ผ ํ๋ค.
+
+#### ๐ ์ด์ ๊ฐ๋ฅํ ์ฝ๋์ ์ค์์ฑ
+
+1. ์์ ํ ์ฝ๋๋ ๋ค์ํ ์ฅ์ ๋ฅผ ๊ทน๋ณตํ๋ฉฐ, ํ๋ชฉ์ฑ์ ๊ฐ์ถ ์ฝ๋๋ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํ๋ค.
+2. ์ฉ์ดํ ๋ถ์์ ์ํด **๋ก๊ทธ, ์งํ, ํธ์ถ ์ถ์ ์ ๋ณด** ๋ฑ์ ์์งํ์.
+3. ์ด์ ๊ฐ๋ฅํ ์์คํ
์ ์ค์ ํ๋ผ๋ฏธํฐ์ ์์คํ
๋๊ตฌ๋ฅผ ๊ฐ์ถ๊ณ ์๋ค.
+
+### 2. ์ฅ์ ์ ๋๋นํ๊ธฐ ์ํ ๋ฐฉ์ด์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์
+
+* ๋ฐฉ์ด์ ์ฝ๋๋ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ๋น๋๊ฐ ๋ฎ์ผ๋ฉฐ, ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋๋ถ๋ถ ๋ณต๊ตฌ๋๋ค.
+* ์ฝ๋๋ฅผ ์์ ํ๊ณ ํ๋ณต์ฑ ์๊ฒ ๋ง๋ค์
+
+#### ๐ ์์ ํ ์ฝ๋
+
+1. ์ปดํ์ผ ํ์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํตํด ๋ฐํ์ ์ฅ์ ์ต์ํ
+2. `๋ถ๋ณ ๋ณ์` ์ฌ์ฉ
+3. ์ ๊ทผ ์ ์ด์ ์ด์ฉํด์ ๋ฒ์ ์ ํ
+4. `์ ์ ํ์
๊ฒ์ฌ๊ธฐ`๋ฅผ ํ์ฉํด์ ๋ฒ๊ทธ ์ค์ด๊ธฐ
+5. ๋ฐํ์์ ์์์น ๋ชปํ ์ผ์ด ๋ฒ์ด์ง์ง ์๋๋ก `์
๋ ฅ๊ฐ ๊ฒ์ฌ`
+
+#### ๐ ํ๋ณต์ฑ ์๋ ์ฝ๋
+
+* ๊ถ์ฅ๋๋ `์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ฒ`์ ํ์ฉํ์ฌ ์ฅ์ ๋ฅผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋ค.
+
+#### โ๏ธ ๋ถ๋ณ ๋ณ์๋?
+
+* ํ ๋ฒ ๊ฐ์ด ํ ๋น๋๋ฉด ๊ทธ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ๊ฒ์ ๋งํ๋ค.
+
+```java
+private final int value;
+```
+
+* ์ฅ์
+
+> 1. ๊ฐ์ ๋ณด์ฅ
+> 2. ์ค๋ ๋ ์์ ์ฑ
+> 3. ์บ์ํ ์ฉ์ด
+> 4. ๋๋ฒ๊น
๋ฐ ํ
์คํธ ์ฉ์ด
+> 5. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ์ ์กฐํฉ
+
+#### โ๏ธ ์ ์ ํ์
๊ฒ์ฌ๊ธฐ๋?
+
+* **์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์ค๋ฅ๋ฅผ ๊ฐ์งํ๋ ๊ฒ**์ ์ ์ ๊ฒ์ฌ ๋๊ตฌ(static checking)
+* ์ฐ์ฐ๋๋ ๊ฐ์ ํ์
์ ๋ฐ๋ผ ์ค๋ฅ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ ์ ํ์
๊ฒ์ฌ
+* ์ด ๋๊ตฌ๋ ์ฝ๋์ ์ปดํ์ผ ๊ณผ์ ์ด๋ ๋น๋ ๊ณผ์ ์์์ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐ๊ฒฌํ๊ณ , ํ์
๊ด๋ จ ์ค๋ฅ, ๋
ผ๋ฆฌ ์ค๋ฅ ๋ฑ์ ์ฒดํฌํ์ฌ ์ ๋ขฐ์ฑ์ ๋์ด๊ณ ์์ ์ฑ ํ๋ณด๋ฅผ ์ํด ์ฌ์ฉ
+* ์ข
๋ฅ: Java์ ์ปดํ์ผ๋ฌ์ ์ ์ ๋ถ์ ๋๊ตฌ, TypeScript์ tsc(Typescript Compiler), Kotlin์ ์ปดํ์ผ๋ฌ, C#์ Roslyn
+
+#### โ๏ธ ์
๋ ฅ๊ฐ ๊ฒ์ฌ ์์
+
+1. ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ
+
+```java
+if (inputValue >= 0 && inputValue <= 100) {
+ // ์ ํจํ ๋ฒ์ ๋ด์ ์
๋ ฅ๊ฐ ์ฒ๋ฆฌ
+} else {
+ // ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์
๋ ฅ๊ฐ ์ฒ๋ฆฌ
+}
+```
+
+2. ์์ธ ์ฒ๋ฆฌ
+
+```java
+try {
+ // ์
๋ ฅ๊ฐ ๊ฒ์ฌ
+ if (inputValue < 0) {
+ throw new IllegalArgumentException("์
๋ ฅ๊ฐ์ ์์์ผ ์ ์์ต๋๋ค.");
+ }
+
+ // ์ ํจํ ์
๋ ฅ๊ฐ ์ฒ๋ฆฌ
+} catch (IllegalArgumentException e) {
+ // ์์ธ ์ฒ๋ฆฌ
+ System.err.println("์๋ฌ: " + e.getMessage());
+}
+```
+
+3. ์ ๊ท ํํ์ ์ฌ์ฉ
+
+```java
+String emailRegex = "^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$";
+if (inputValue.matches(emailRegex)) {
+ // ์ ํจํ ์ด๋ฉ์ผ ์ฃผ์ ํ์
+} else {
+ // ์๋ชป๋ ํ์
+}
+```
+
+4. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ
+
+```java
+import org.apache.commons.lang3.Validate;
+
+try {
+ Validate.isTrue(inputValue > 0, "์
๋ ฅ๊ฐ์ ์์์ฌ์ผ ํฉ๋๋ค.");
+
+ // ์ ํจํ ์
๋ ฅ๊ฐ ์ฒ๋ฆฌ
+} catch (IllegalArgumentException e) {
+ // ์์ธ ์ฒ๋ฆฌ
+ System.err.println("์๋ฌ: " + e.getMessage());
+}
+```
+
+### 3. null ๊ฐ ์ฌ์ฉ์ ํผํ์
+
+#### ๐ null์ด๋
+
+* ๊ฐ์ด ํ ๋น๋์ง ์์ ๋ณ์์ ๊ธฐ๋ณธ๊ฐ
+
+#### ๐ NullPointException
+
+* ๋งค์ฐ ๋ณดํธ์ ์ผ๋ก ๋ฐ์
+* ๋ณ์๊ฐ **๋๊ฐ์ ๊ฐ์ง ์์๋์ง ๊ฒ์ฌํ๊ฑฐ๋, ๋ ๊ฐ์ฒด ํจํด์ด๋ ์ต์
ํ์
๋ฑ์ ์ฌ์ฉ**ํด์ ๋ ํฌ์ธํธ ์์ธ ๋ฐฉ์ง
+
+#### โ๏ธ ๋ ๊ฐ์ฒด ํจํด(Null Object Pattern)
+
+> ๋ํดํธ ๊ฐ์ ์ ๊ณตํ๊ณ , ์ฝ๋์ ๊ฐ๋
์ฑ์ ํฅ์ํ๋ค.
+
+1. null ์ฐธ์กฐ ๋์ ์ **์ค์ ๋์ํ๋ ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ ์์ธ๋ฅผ ํผํ๊ณ ๊ธฐ๋ณธ ๋์์ ์ ๊ณตํ๋ ํจํด**
+2. ๋ ๊ฐ ๋์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํจํด
+3. ๋ ๊ฐ์ฒด๋ ์ค์ ๊ฐ์ฒด์ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฉฐ, ๋ฉ์๋ ํธ์ถ ์ ์๋ฌด๋ฐ ๋์์ ์ํํ์ง ์๊ฑฐ๋ ๊ธฐ๋ณธ ๊ฐ ๋ฐํ
+
+```java
+interface Shape {
+ double area();
+}
+
+class Circle implements Shape {
+ private double radius;
+
+ public Circle(double radius) {
+ this.radius = radius;
+ }
+
+ public double area() {
+ return Math.PI * radius * radius;
+ }
+}
+
+class NullShape implements Shape {
+ public double area() {
+ return 0.0; // ๋ ๊ฐ์ฒด ์ญํ , ๋ํดํธ ๊ฐ ์ ๊ณต
+ }
+}
+```
+
+4. ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ฐพ์ง ๋ชปํ์ ๋ ๋น ๋ฐฐ์ด์ ๋ฆฌํดํ๋ ๊ฒ์ ๋ฉ์๋๋ฅผ ๊ตฌํ
+
+```java
+import java.util.Arrays;
+
+public class SearchExample {
+ private static final Person[] EMPTY_PERSON_ARRAY = new Person[0];
+
+ public static Person[] searchPersons(String keyword) {
+ // ์ํ๋ ๊ฒ์ ๋ก์ง ๊ตฌํ
+ // ์์๋ก ํญ์ ๋น ๋ฐฐ์ด์ ๋ฆฌํดํ๋๋ก ํจ
+ return EMPTY_PERSON_ARRAY;
+ }
+
+ public static void main(String[] args) {
+ String searchKeyword = "Alice";
+ Person[] foundPersons = searchPersons(searchKeyword);
+
+ if (foundPersons.length == 0) {
+ System.out.println("No persons found.");
+ } else {
+ System.out.println("Found persons:");
+ for (Person person : foundPersons) {
+ System.out.println("Name: " + person.getName() + ", Age: " + person.getAge());
+ }
+ }
+ }
+}
+
+class Person {
+ private String name;
+ private int age;
+
+ public Person(String name, int age) {
+ this.name = name;
+ this.age = age;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+}
+```
+
+#### โ๏ธ ์ต์
ํ์
+
+1. ๊ฐ์ ์กด์ฌ ์ ๋ฌด๋ฅผ ๋ช
์์ ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ, ๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ ์ค์ ๊ฐ์ ๊ฐ์ง๊ณ , ๊ฐ์ด ์๋ ๊ฒฝ์ฐ๋ ๋น ์ํ๋ฅผ ๋ํ๋ด๋ ํ์
+
+```java
+class Option { //Option ํด๋์ค๋ ์ ๋๋ฆญ ํ์
์ ์ฌ์ฉํด์ ๊ฐ์ ์กด์ฌ ์ ๋ฌด๋ฅผ ๋ํ๋ด๋ฉฐ
+ private T value;
+
+ private Option(T value) {
+ this.value = value;
+ }
+
+ public static Option of(T value) {
+ return new Option<>(value);
+ }
+
+ public T get() {
+ if (value == null) { // ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋์ง๋ฉฐ
+ throw new IllegalStateException("No value present");
+ }
+ return value; // ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ค์ ๊ฐ ๋ฐํ
+ }
+}
+```
+
+#### ๐ ๋ ๊ฒ์ฌ๋ ๋ฉ์๋์ ์์ ์ง์ ์์ ํด์ผํ๋ค.
+
+1. `NotNull` ์ ๋
ธํ
์ด์
์ธ์ด ๊ธฐ๋ฅ ์ด์ฉ
+
+```java
+import javax.validation.constraints.NotNull;
+
+public class Person {
+ private String name;
+ private int age;
+
+ public Person(@NotNull String name, @NotNull int age) {
+ this.name = name;
+ this.age = age;
+ }
+
+ @NotNull
+ public String getName() {
+ return name;
+ }
+
+ public void setName(@NotNull String name) {
+ this.name = name;
+ }
+
+ @NotNull
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(@NotNull int age) {
+ this.age = age;
+ }
+
+ public static void main(String[] args) {
+ // ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ
+ Person person = new Person("Alice", 30);
+ System.out.println("Name: " + person.getName());
+ System.out.println("Age: " + person.getAge());
+
+ // ์ ์ฌ์ ์ธ ์ค๋ฅ: null ๊ฐ ์ ๋ฌ
+ Person nullPerson = new Person(null, 25); // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์
+ System.out.println("Name: " + nullPerson.getName());
+ System.out.println("Age: " + nullPerson.getAge());
+ }
+}
+```
+
+### 4. ๋ถ๋ณ ๋ณ์๋ฅผ ์ฌ์ฉํ์
+
+> ์๋ฐ์์๋ final, ์ค์นผ๋ผ์์๋ val ๋ฌ์คํธ๋ let
+
+1. ๋ถ๋ณ ๋ณ์๋ ๊ฐ์ด ํ ๋ฒ ๋์
๋๊ณ ๋๋ฉด ๊ทธ ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ค.
+2. ๋ถ๋ณ ๋ณ์๋ ์๋์น ์๊ฒ ๋ณ์์ ๊ฐ์ด ๋ฐ๋์ง ์์ ๊ฒ์ ์ธ์ง
+3. ๋ถ๋ณ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ๋ ๊ฐ๋จํด์ง๋ฉฐ, ๋ณ์ ๊ฐ์ด ๋ฐ๋์ง ์์ ๊ฒ์์ ์ธ์งํ๋ ์ปดํ์ผ๋ฌ๋ ๋ฐํ์์ ๋ ํจ์จ์ ์ผ๋ก ๋์ ๊ฐ๋ฅํ๋ค.
+
+### 5. ํ์
ํํธ์ ์ ์ ํ์
๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ์.
+
+> ๋ณ์๊ฐ ๋ณด๊ดํ ์ ์๋ ๊ฐ์ ์ ํํ์. ๋ช ๊ฐ์ง ๋ฌธ์์ด ๊ฐ ์ค ํ๋๋ง ๊ฐ์ง ์ ์๋ ๋ณ์๋ String๋ณด๋ค๋ `Enum` ์ ์ธ ๊ฐ๋ฅ
+
+1. ์์์น ๋ชปํ ๊ฐ์ ๋์
ํด๋ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ์ง ์๊ณ ๊ทธ ์ฆ์ ์คํจํ๊ฒ ๋๋ค.
+2. ๊ฐ์ฅ ๊ตฌ์ฒด์ ์ธ ํ์
์ ์ฌ์ฉํ์
+
+#### ๐ Enum์ด ๋ ์ข์ ์ด์
+
+> 1. Enum์ ๋ช ๊ฐ์ง ๊ณ ์ ๋ ๊ฐ์ ๋ํ๋ด๋ ์๋ฃํ์ผ๋ก, ํ์ ๋ ์ ํ์ง ์ค ํ๋๋ง ๊ฐ์ง ์ ์๋ ๋ณ์
+
+2. ๊ฐ๋
์ฑ ๋ฐ ์์ ์ฑ์ ์ข์
+3. ์ ํ๋ ์ ํ์ง
+4. ์ฝ๋ ์ ์ง๋ณด์
+5. ํ์
์์ ์ฑ
+6. ์ด๊ฑฐํ ์์ ์ฌ์ฉ
+
+```java
+public enum DayOfWeek {
+ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
+}
+
+public class Main {
+ public static void main(String[] args) {
+ DayOfWeek today = DayOfWeek.WEDNESDAY;
+
+ switch (today) {
+ case MONDAY:
+ System.out.println("Today is Monday.");
+ break;
+ case WEDNESDAY:
+ System.out.println("Today is Wednesday.");
+ break;
+ // ...
+ }
+ }
+}
+```
+
+#### ๐ ํ์ด์ฌ ์์
+
+* ํ์
ํํธ๋ฅผ ์ด์ฉํด์ ๋ฉ์๋๊ฐ ๋ฌธ์์ด ์ธ์๋ฅผ ๋ฐ์ ๋ฌธ์์ด์ ๋ฆฌํดํ๋ค๋ ์ฌ์ค
+* ํจ์์ ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ์ ํ์
์ ๋ช
์ ๊ฐ๋ฅ
+
+```python
+def say(something: str) -> str:
+ return "You said: " + something
+
+```
+
+#### โ๏ธ ํ์
ํํธ๋
+
+> **ํ์
ํํธ**๋ ๊ธฐ์กด์ ์ฝ๋๋ฒ ์ด์ค์ ์ ์ง์ ์ผ๋ก ์ถ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ํ์
ํํธ๋ฅผ ์ด์ฉํด์ ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ฒ๊ทธ๋ฅผ ์ฐพ์๋๋ ์ ์ ํ์
๊ฒ์ฌ๊ธฐ ๋์
ํ๋ฉด ๋ฐํ์ ์๋ฌ ํด๊ฒฐ ๊ฐ๋ฅ
+
+* ํ์
ํํธ(Type Hint)๋ **ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ณ์, ํจ์ ๋งค๊ฐ๋ณ์, ํจ์ ๋ฐํ๊ฐ ๋ฑ์ ๋ํ ๋ฐ์ดํฐ ํ์
์ ๋ณด๋ฅผ ์ ๊ณต**ํ๋ ๊ฒ์ ๋งํ๋ค.
+* ํ์
ํํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ด๊ณ ํ์
๊ด๋ จ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์๋ค.
+* ์ฃผ๋ก ์ ์ ํ์
์ธ์ด์์ ์ฌ์ฉ๋๋ฉฐ, ํ์ด์ฌ๊ณผ ๊ฐ์ ๋์ ํ์
์ธ์ด์์๋ ํ์
ํํธ๋ฅผ ์ง์
+
+### 6. ์
๋ ฅ๊ฐ์ ๊ฒ์ฌํ์.
+
+> ์ฝ๋๋ก ์ ๋ฌ๋๋ ์
๋ ฅ๊ฐ์ ํผ์ ๊ฐ๋ฅ์ฑ์ด ๋์. \*\*์ฌ์ ์กฐ๊ฑด, ์ฒดํฌ์ฌ, ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ, ๋ณด์ ๊ด๋ จ ๊ถ์ฅ ๊ธฐ๋ฒ, ๋ณดํธ์ ์ธ ์๋ฌ๋ฅผ ์ฐพ์์ฃผ๋ ๋๊ตฌ \*\*ํ์ฉ
+
+* ์์น ์๋ ์
๋ ฅ๊ฐ์ด ์ ๋ฌ๋๋ฉด ์ต๋ํ ์ด๋ฅธ ์์ ์ ์คํ์ ๊ฑฐ๋ถํ๋๋ก ์กฐ์นํด๋์.
+* ์ต๋ํ ๋ง์ด ๊ฒ์ฌํ์.
+* \*\*`์
๋ ฅ ๋ฌธ์์ด`\*\*์ด ์ํ๋ ํ์์ธ์ง ํ์ธํ๊ณ , ๋ฌธ์์ด ์ ๋ค์ ๊ณต๋ฐฑ๋ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ์
+* ์ซ์๋ ์ ์ ํ ๋ฒ์ ๋ด์ ์๋์ง, ํ๋ผ๋ฏธํฐ๊ฐ 0๋ณด๋ค ์ปค์ผ ํ๋ค๋ฉด ๋ฐ๋์ ํ๋ผ๋ฏธํฐ๋ ํ์ธ
+* ํ๋ผ๋ฏธํฐ๊ฐ IP์ฃผ์๋ผ๋ฉด ์ ์ ํ IP์ฃผ์์ธ์ง๋ ํ์ธ
+
+#### ๐ ์ฌ์ ์กฐ๊ฑด, ์ฌํ ์กฐ๊ฑด ์ด์ฉ
+
+> ์ ํจ์ฑ ๊ฒ์ฌ๋ ํจ์๋ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๋ํ ํ์
, ๋ฒ์, ์ํ ๋ฑ์ ํ์ธํ๋ ๊ณผ์
+
+1. ๋ฉ์๋์ ์ ๋ฌ๋๋ ์ ํจ์ฑ ๊ฒ์ฌ ํ์
+2. ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ ์ฌ์ฉ
+
+#### ๐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐฉ๋ฒ
+
+1. ํ์
ํํธ ์ฌ์ฉ
+2. ์ ์ฒ๋ฆฌ ๊ณผ์ ์ถ๊ฐ
+
+* ๋ฉ์๋ ๋ด๋ถ์์ ์ธ์์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์ถ๊ฐํ ์ ์๋ค.
+* ์๋ฅผ ๋ค์ด, ์ธ์๊ฐ ํน์ ๋ฒ์ ๋ด์ ์๋์ง, ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ๋ฑ์ ๊ฒ์ฌํ ์ ์๋ค. ์ด๋ ๊ฒ์ฌ์ ์คํจํ๋ฉด ์์ธ๋ฅผ ๋์ง๊ฑฐ๋ ๊ธฐ๋ณธ๊ฐ์ ๋ฐํํ๋ ๋ฑ์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
+
+3. ์์ธ ์ฒ๋ฆฌ
+4. ์ฌ์ ์กฐ๊ฑด, ์ฌํ ์กฐ๊ฑด ์ค์
+
+* ์ฌ์ ์กฐ๊ฑด์ ํจ์๊ฐ ์คํ๋๊ธฐ ์ ์ ๊ฒ์ฌํด์ผ ํ ์กฐ๊ฑด์ ๋ํ๋ด๋ฉฐ, ์ฌํ ์กฐ๊ฑด์ ํจ์๊ฐ ์คํ๋ ํ์ ์กฐ๊ฑด์ ๋ํ๋ธ๋ค.
+* ์ฌ์ ์กฐ๊ฑด ์ค์ : b๊ฐ 0์ด๋ฉด `AssertionError` ์์ธ ๋ฐ์
+
+```python
+def divide(a, b):
+ assert b != 0, "b cannot be zero"
+ return a / b
+```
+
+* ์ฌํ ์กฐ๊ฑด ์ค์ : ํฉ๊ณ๊ฐ ์์๊ฐ ์๋์ง ๊ฒ์ฌ ํ ์ฌํ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์ผ๋ฉด `AssertionError` ์์ธ ๋ฐ์
+
+```python
+def calculate_sum(numbers):
+ result = sum(numbers)
+ assert result >= 0, "sum should be non-negative"
+ return result
+```
+
+5. ์ ํจ์ฑ ๊ฒ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
+6. ๋ฌธ์ํ
+
+#### ๐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ
+
+**1. cheackNotNull์ด๋ผ๋ ๋ฉ์๋** **2. @Size(min=0, max=100)**
+
+#### ๐ ์๋์น ์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์ผ์ด๋์ง ์์๋์ง ์ฒดํฌ์ฌ์ ์ด์ฉํด์ ํ์ธ
+
+**1. ์ฒดํฌ์ฌ์ด๋?**
+
+* ๋ฐ์ดํฐ์ ํน์ ๋ถ๋ถ์์ ์์ฑ๋ ํด์ ๊ฐ ๋๋ ์ฒดํฌ์ฌ ๊ฐ์ ์ฌ์ฉํ์ฌ ๋ฐ์ด ํฐ
+* **๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ฒดํฌ์ฌ ๊ฐ๋ ๋ณ๊ฒฝ๋๋ฏ๋ก ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌ๋ถ ํ์ธ ๊ฐ๋ฅ**\
+
+
+2. ์์
+
+* ํ์ผ์ ์ฒดํฌ์ฌ์ ๊ณ์ฐํ์ฌ ์ ์ฅํ๊ณ ์ดํ์ ํ์ผ์ ๋ค์ ์ฝ์ด์์ ์ฒดํฌ์ฌ์ ๋ค์ ๊ณ์ฐํ ํ ์ ์ฅ๋ ์ฒดํฌ์ฌ๊ณผ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌ๋ถ๋ฅผ ํ์ธ
+* ์์ python
+
+```python
+import hashlib
+
+def calculate_checksum(data):
+ # ๋ฐ์ดํฐ์ ์ฒดํฌ์ฌ ๊ฐ์ ๊ณ์ฐํ๋ ํจ์
+ sha256 = hashlib.sha256()
+ sha256.update(data.encode())
+ return sha256.hexdigest()
+
+def save_data_with_checksum(filename, data):
+ # ๋ฐ์ดํฐ์ ์ฒดํฌ์ฌ ๊ฐ์ ํ์ผ์ ์ ์ฅํ๋ ํจ์
+ checksum = calculate_checksum(data)
+ with open(filename, 'w') as file:
+ file.write(data + '\n')
+ file.write(checksum)
+
+def verify_checksum(filename):
+ # ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ฒดํฌ์ฌ ๊ฐ์ ํ์ธํ๋ ํจ์
+ with open(filename, 'r') as file:
+ lines = file.readlines()
+ data = lines[0].strip()
+ saved_checksum = lines[1].strip()
+ calculated_checksum = calculate_checksum(data)
+ if saved_checksum == calculated_checksum:
+ print("Checksum verification successful. Data is intact.")
+ else:
+ print("Checksum verification failed. Data may be corrupted.")
+
+# ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ์ ์ฅ
+data = "Hello, world!"
+filename = "data.txt"
+save_data_with_checksum(filename, data)
+
+# ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ
+verify_checksum(filename)
+```
+
+**2. java ์์ **
+
+```java
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class DataIntegrityExample {
+
+ // ์
๋ ฅ๋ ๋ฐ์ดํฐ์ ์ฒดํฌ์ฌ์ ๊ณ์ฐํ๋ ๋ฉ์๋
+ public static String calculateChecksum(String data) throws NoSuchAlgorithmException {
+ // SHA-256 ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ MessageDigest ๊ฐ์ฒด ์์ฑ
+ MessageDigest md = MessageDigest.getInstance("SHA-256");
+ // ๋ฐ์ดํฐ์ ํด์๊ฐ ๊ณ์ฐ
+ byte[] hash = md.digest(data.getBytes());
+ StringBuilder hexString = new StringBuilder();
+
+ // ํด์๊ฐ์ 16์ง์ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํ
+ for (byte b : hash) {
+ String hex = Integer.toHexString(0xff & b);
+ if (hex.length() == 1) {
+ hexString.append('0');
+ }
+ hexString.append(hex);
+ }
+
+ return hexString.toString();
+ }
+
+ public static void main(String[] args) {
+ try {
+ // ์๋ณธ ๋ฐ์ดํฐ ์ค์
+ String originalData = "Hello, world!";
+ // ์๋ณธ ๋ฐ์ดํฐ์ ์ฒดํฌ์ฌ ๊ณ์ฐ
+ String checksum = calculateChecksum(originalData);
+
+ System.out.println("Original Data: " + originalData);
+ System.out.println("Calculated Checksum: " + checksum);
+
+ // ๋ฐ์ดํฐ ๋ณ์กฐ ์๋ฎฌ๋ ์ด์
+ String corruptedData = "Hacked, world!";
+ // ๋ณ์กฐ๋ ๋ฐ์ดํฐ์ ์ฒดํฌ์ฌ ๊ณ์ฐ
+ String corruptedChecksum = calculateChecksum(corruptedData);
+
+ System.out.println("Corrupted Data: " + corruptedData);
+ System.out.println("Corrupted Checksum: " + corruptedChecksum);
+
+ // ์ฒดํฌ์ฌ ๊ฐ ๋น๊ต๋ฅผ ํตํ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ
+ if (checksum.equals(corruptedChecksum)) {
+ System.out.println("Checksum verification failed. Data may be corrupted.");
+ } else {
+ System.out.println("Checksum verification successful. Data is intact.");
+ }
+ } catch (NoSuchAlgorithmException e) {
+ System.err.println("Error: " + e.getMessage());
+ }
+ }
+}
+
+```
+
+#### ๐ ๊ฒ์ฆ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํด์ ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ
๋ฐฉ์งํ์.
+
+* ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ
๋ฐฉ์ง (Cross-Site Scripting, XSS):
+
+1. ์ค๋ช
: ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ
์ **์
์์ ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์
ํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ์๋ค์๊ฒ ์
์ฑ ํ์๋ฅผ ์ ๋ฐํ ์ ์๋ ๊ณต๊ฒฉ**
+2. ์์: ์
๋ ฅ ํผ์ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฝ์
ํ์ฌ ๋ค๋ฅธ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ํ๋ํ๋ ์๋๋ฅผ ์ฐจ๋จํด์ผ ํ๋ค. ๋ํ์ ์ผ๋ก `HTML ์ด์ค์ผ์ดํ ํจ์`๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ฒ๋ฆฌ๊ฐ ํ์
+
+#### ๐ ํญ์ ์
๋ ฅ๊ฐ ๊ฒ์ฌํด์ SQL ์ฃผ์
๊ณต๊ฒฉ ์๋ฐฉ
+
+* SQL ์ฃผ์
๊ณต๊ฒฉ ๋ฐฉ์ง:
+
+1. ์ค๋ช
: SQL ์ฃผ์
์ **์ฌ์ฉ์ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์กฐ์**ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ๋ณ์กฐํ๋ ๊ณต๊ฒฉ
+2. ์์ : ์ฌ์ฉ์ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ฟผ๋ฆฌ์ ์ฝ์
ํ์ง ์๊ณ , ํ๋ ์์ํฌ๋ ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ SQL ์ฃผ์
๊ณต๊ฒฉ์ ์๋ฐฉํ ์ ์๋ค.
+
+#### ๐ strcpy ๊ฐ์ ๋ช
๋ น ์ด์ฉํด์ ๋ฉ๋ชจ๋ฆฌ ์กฐ์ ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ํ๋ผ๋ฏธํฐ ๋ช
์์ ์ค์ ํด์ ๋ฒํผ ์ค๋ฒํ๋ก๋ฅผ ๋ฐฉ์ง
+
+* ๋ฒํผ ์ค๋ฒํ๋ก ๋ฐฉ์ง
+
+1. ์ค๋ช
: ๋ฒํผ ์ค๋ฒํ๋ก๋ **ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ด๊ณผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ๋ ๊ณต๊ฒฉ**์ผ๋ก ํฌ๋์๋ฅผ ์ ๋ฐํ๊ฑฐ๋ ์คํ ํ๋ฆ์ ์กฐ์ํ ์ ์๋ค.
+2. ์์ : `๋ฌธ์์ด ๋ณต์ฌ ํจ์(strcpy)`๋ฅผ ์ฌ์ฉํ ๋ ๋ช
์์ ์ผ๋ก ๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๊ฑฐ๋, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ๊ฐํ๋ ํจ์(strncpy, memcpy)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒํผ ์ค๋ฒํ๋ก๋ฅผ ์๋ฐฉํ ์ ์๋ค.
+
+#### ๐ ๋ณด์ ์ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋กํ ์ฝ์ ์ง์ ์์ฑ๋ง๊ณ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ฒ ์ฌ์ฉ
+
+1. ์ค๋ช
: ๋ณด์ ์ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณดํธํ๋ ๊ฒ์ด ์ค์
+2. ์์ : ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ ์ ์ฅ ์์๋ ์์ ํ ํด์ ํจ์ (์: BCrypt)๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํํ๊ณ , ๋ฐ์ดํฐ ์ ์ก ์์๋ `HTTPS ํ๋กํ ์ฝ`์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ์ ๋ณด์์ ๊ฐํ
+
+### 7. ์์ธ๋ฅผ ํ์ฉํ์
+
+> ํน์ ํ ๋ฆฌํด๊ฐ์ผ๋ก ์๋ฌ๋ฅผ ํํํ๋ ๊ฒ์ ๊ธ๋ฌผ์ด๋ค.
+
+1. ํน์ ํ ๋ฆฌํด๊ฐ์ ๋ฉ์๋ ์๊ทธ๋์ฒ์ ๋ช
ํํ๊ฒ ๋๋ฌ๋์ง ์์ ์ ์๋ค. 2. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ๋ฆฌํด๊ฐ์ด ์๋ฌ๋ฅผ ์๋ฏธํ๋ค๋ ์ ์ ๋ชจ๋ฅผ ์ ์์ผ๋ฉฐ, ์ด๋ค ๋ฆฌํด๊ฐ์ด ์ด๋ค ์๋ฌ ์ํ๋ฅผ ์๋ฏธํ๋์ง ๊ธฐ์ตํ๊ธฐ๋ ์ด๋ ต๋ค.
+2. ์์ธ๋ ์ด๋ฆ๋ ์๊ณ ์คํ ์ถ์ ์ ๋ณด, ์ค ๋ฒํธ, ๋ฉ์ธ์ง ๋ฑ nujll์ด๋ -1๋ง์ผ๋ก ํํํ์ง ๋ชปํ๋ ํจ์ฌ ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
+
+### 8. ์์ธ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ฌ์ฉํ์.
+
+> ์์ธ๋ **์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ ์ ์ดํ๋ ์ฉ๋๊ฐ ์๋๋ผ, ์คํจ๋ฅผ ์ฒ๋ฆฌํ ๋๋ง ์ฌ์ฉ**ํด์ผ ํ๋ค. ๋ํ ์ธ์ด์ ๋ด์ฅ๋ ์์ธ ํ์
์ด ๋ฌธ์ ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ํํํ ์ ์๋ค๋ฉด ์์๋ก ์์ธ๋ ์ ํ์ง ์๋๋ค.
+
+#### ๐ ๊ฐ๋ฅํ๋ฉด ์ธ์ด์ ๋ด์ฅ๋ ์์ธ๋ฅผ ์ฌ์ฉํ๊ณ ํฌ๊ด์ ์ธ ์๋ฏธ๋ฅผ ๋ด๋ ์์ธ๋ ๋ง๋ค์ง ์๊ฒ ํ์.
+
+1. ๋๋ฌด ํฌ๊ด์ ์ผ๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ํ์
ํ ์ ์์ด ์์ธ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์ ์ง๋ค.
+2. ๋ฐ์ํ ์๋ฌ์ ๋ํด ์ ํํ ์ ๋ณด๋ฅผ ์์ง ๋ชปํ๋ฉด ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์
์คํ์ด ์ค๋จ๋๊ฒ ํ ์ ๋ฐ์ ์์ผ๋ฉฐ, ์ด๋ ์ฌ๊ฐํ ๋ฌธ์
+
+#### ๐ ์์ธ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ผ๋ก ์ฌ์ฉํด์๋ ์๋๋ค.
+
+1. ์ฐ๋ฆฌ๋ ์ฝ๋๊ฐ ์์์น ๋ชปํ ๋์์ ํ์ง ์๊ธธ ์ํ ๋ฟ์ด์ง ์ฝ๋ ์ค์ค๋ก ๋๋ํด์ง๊ธธ ์ํ๋ ๊ฒ ์๋๋ค.
+2. ์์ธ๋ฅผ ์ด์ฉํด์ ๋ฉ์๋๋ฅผ ๋ถ๊ธฐํ๋ฉด ์ดํด๊ฐ ์ด๋ ค์ธ ๋ฟ ๋๋ฌ ๋๋ฒ๊น
๋ ์ด๋ ค์์ง๋ค.
+3. ์๋ชป๋ ์์
+
+* ์ค๋ช
: ์์ ์ฝ๋๋ OrderProcessingException์ ์ํ ๊ฒ์ฆ์ฉ์ผ๋ก ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ ์ ์ดํ๋ ค๊ณ ํ๋ค.
+* ์ด๋ก ์ธํด ์์ธ๊ฐ ์ ์์ ์ธ ํ๋ฆ ์ ์ด์ ์ฌ์ฉ๋๋ฉฐ, ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง ์ ์๋ค.
+* ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ ์์ธ๊ฐ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ํ ๊ฒ์ฆ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋ค. ์๋ ์์ ์ ๊ฒฝ์ฐ `if`๋ฌธ ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ช
์์ ์ธ ์ํ ๊ฒ์ฆ๊ณผ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
+
+```java
+public class IncorrectExceptionUsage {
+
+ // ์๋ชป๋ ์์ธ ์ฌ์ฉ: ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ผ๋ก ์์ธ ํ์ฉ
+ public static void processOrder(int orderStatus) throws OrderProcessingException {
+ try {
+ if (orderStatus == 0) {
+ throw new OrderProcessingException("Invalid order status"); // ์์ธ๋ฅผ ์ํ ๊ฒ์ฆ์ ์ฌ์ฉ
+ }
+
+ // ์ฃผ๋ฌธ ์ฒ๋ฆฌ ๋ก์ง
+ // ...
+
+ } catch (OrderProcessingException ex) {
+ // ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋
+ logError(ex.getMessage());
+ }
+ }
+
+ public static void main(String[] args) {
+ int orderStatus = 0;
+ try {
+ processOrder(orderStatus);
+ } catch (OrderProcessingException ex) {
+ logError("Failed to process order: " + ex.getMessage());
+ }
+ }
+
+ private static void logError(String message) {
+ System.err.println("Error: " + message);
+ }
+}
+
+
+```
+
+### 8. ์์ธ๋ ์ผ์ฐ ๋์ง๊ณ ์ต๋ํ ๋ฆ๊ฒ ์ฒ๋ฆฌํ์.
+
+#### ๐ ์ผ์ฐ ๋์ง๋ค๋ผ๋ ์๋ฏธ
+
+> ๊ฐ๋ฐ์๊ฐ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ์ํ๊ฒ ์ฐพ์ ์ ์๋๋ก ์๋ฌ๊ฐ ๋ฐ์ํ ์ง์ ์ผ๋ก๋ถํฐ ์ต๋ํ ๊ฐ๊น์ด ์ง์ ์์ ์์ธ๋ฅผ ๋์ง๋ค๋ ๋ป์ผ๋ก ์ค๊ฐ์ ์์นํ ๊ณ์ธต์ ์ด์คํ๊ฒ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋ณด๋ค๋ ์์ธ๋ฅผ ์์๋ก ๊ณ์ธตํ๋ ๊ฒ ๋ง๋ค.
+
+1. ์ค์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ง์ ์์ ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ณณ์ผ๋ก ํ๋ฉด ์ด๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์๊ธฐ ์ด๋ ค์์ง๋ค.
+2. ์ง์ง ๋ฌธ์ ๋ ๋ค๋ฅธ๊ณณ์์ ๋ฐ์ํ๋ค๋ ์ฌ์ค์ ์์๋ด์ผ๋ง ๋ฒ๊ทธ๋ฅผ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
+
+#### ๐ ์์ธ๋ฅผ ๋ฆ๊ฒ ์ก๋๋ค๋ผ๋ ์๋ฏธ
+
+> ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์ ํ ์์น์ ๋์ฐฉํ ๋๊น์ง ๊ณ์ ํธ์ถ ์คํ์ ํตํด ์ ํ์ํจ๋ค๋ ๋ป์ด๋ค.
+
+1. ์๋ฅผ ๋ค์ด ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ค๋๋ฐ ๋จ์ ๋์คํฌ ๊ณต๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์๊ฐํด๋ณด๊ธฐ
+
+* ๋์ฒ๋ฐฉ์
+
+ * ์คํ์ ์ค๋จํ๊ณ ์ฌ์๋
+ * ๋น๋๊ธฐ์ ์ผ๋ก ์ฌ์๋ํ๋ ๋ฐฉ๋ฒ
+ * ๋ค๋ฅธ ๋์คํฌ์ ๊ธฐ๋ก
+ * ์ฌ์ฉ์์๊ฒ ๊ฒฝ๊ณ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ์๋ ์๋ค.
+ * ํฌ๋์๊ฐ ๋ฐ์ํ๋๋ก ๋๋๋ ๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ
+
+ > `ํฌ๋์`๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด๋ ์์คํ
์ด ์๊ธฐ์น ์๊ฒ ์ค๋จ๋๊ฑฐ๋ ๋์ํ์ง ์๋ ํ์์ ์๋ฏธ ๋ค์ ๋งํด, ํ๋ก๊ทธ๋จ์ด๋ ์์คํ
์ด ์ค๋ฅ๋ก ์ธํด ์ ์์ ์ผ๋ก ๋์ํ์ง ์๊ฑฐ๋ ๋ฉ์ถ๋ ์ํ
+
+2. ์ ์ ํ ์กฐ์น๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ก๊ทธ ์ ํ ๊ธฐ์
์ ๋ฐ๋์ ๊ธฐ๋ก๋ผ์ผ ํ๋ ๋ฐ๋ฉด ์๋ํ๋ก์ธ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ ์ฅ ๊ธฐ๋ฅ์ ์กฐ๊ธ ๋ฆ๊ฒ ์คํ๋๋ ๋ฌด๋ฐฉํ๋ค.
+
+#### ๐ ์ต์
์ ๊ฒฝ์ฐ
+
+* ์ด ๊ฒฝ์ฐ ์์ธ๋ ๋ก๊ทธ์ ๊ธฐ๋ก๋์ง๋ ์๊ณ ๋ค์ ๋์ ธ์ง์ง๋ ์์ผ๋ฉฐ ๋ค๋ฅธ ์ด๋ค ์กฐ์น๋ ์ทจํด์ง์ง ์์๋ค.
+* ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ์๋ฌด๋ ์ ์ ์์ผ๋ฉฐ, ์ต์
์ ๊ฒฐ๊ณผ ์ด๋
+
+```java
+try{
+//..
+}
+catch(Exception e){
+//์๋ฌ๋ฅผ ์ฒ๋ฆฌํ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ๋ฌด์
+}
+```
+
+## ๋๋์
+
+> ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ด๋์๋ถํฐ ์ด๋๊น์ง ํด์ผํ๋ ๊ฒ์ ์ด ์ฅ์์ ํต์ฌ์ ์ง์ด์ฃผ๋ ๊ฒ ๊ฐ๋ค. ์ด ์ฅ์ ๋๋ฌด ๊ธธ์ด์ ธ์ ์ฌ๋ฌ ๊ฐ๋ก ๋๋ ์ ์ ๋ฆฌํ ์์ ์ด๋ฉฐ, **์๋ฐ์ ํ์ด์ฌ์ ๋ด์ฅ ์์ธ์ฒ๋ฆฌ**์ ๋ํด ํ ๋ฒ ์ ๋ฆฌํด์ผ ๊ฒ ๋ค.
diff --git "a/developLog/book/onboarding/4/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 __2__.md" "b/developLog/book/onboarding/4/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 __2__.md"
new file mode 100644
index 0000000..ff6cf84
--- /dev/null
+++ "b/developLog/book/onboarding/4/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 4\354\236\245 __2__.md"
@@ -0,0 +1,515 @@
+# ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 4์ฅ -(2)
+
+![](https://velog.velcdn.com/images/prettylee620/post/b9ac94e2-3069-475e-98c6-9bcbc19cdce6/image.png)
+
+> ์ด ๊ธ์ ์ฑ
์ ์ฝ๊ณ ๊ณต๋ถํ๊ณ ๊ธฐ์ตํ๊ธฐ ์ํ ๊ธฐ๋ก์ฉ์ผ๋ก ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ญ์ ํ๊ฒ ์ต๋๋ค.
+
+## ์ด์ ํ๊ฒฝ์ ๊ณ ๋ คํ ์ฝ๋ ์์ฑ
+
+### 1. ์ฌ์๋๋ ํ๋ช
ํ๊ฒ
+
+#### ๐ ์๋ฌ๋ฅผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ ์ฒซ ๋ฒ์งธ ์ฌ์๋
+
+> ๋จ์ํ ๋ค์ ์๋ํ๋ ๊ฒ์ด๋ค. ์์
์ ๋ค์ ์๋ํ๋ค๋ ๊ฒ์ ์ฌ์ด ์ผ์ฒ๋ผ ๋ณด์ผ ์ ์๋ค. ํ์ง๋ง ํ์ค์์ ์ฌ์๋์ ์๊ธฐ์ ๋น๋๋ฅผ ํ๋จํ๋ ค๋ฉด ์ฝ๊ฐ์ ๋
ธํ์ฐ๊ฐ ํ์ํ๋ค.
+
+* ์ฌ๋ฌ ์ฐจ๋ก ์ฌ์๋ํ๋ ค๋ ์๋๋ ์ฃผ๋ก ์๊ฒฉ ์์คํ
์ ํธ์ถํ ๊ฒฝ์ฐ ๋ํ๋๋ค.
+
+#### ๐ ๋จ์ํ ์์ธ๋ฅผ ์ก์์ ๊ทธ ์ฆ์ ์์
์ฌ์๋
+
+* ๋ฌธ์ ๋ ์ฌ์๋ ํ ๋ ์คํจํ๋ฉด ์๋๋ง ๋๋ ค์ง๊ณ ์์คํ
๋ณต๊ตฌํ๊ธฐ๋ ์ ์ ์ด๋ ค์์ง๋ค.
+
+#### ๐ ๋ฐฑ์คํ ์ ๋ต ์ฌ์ฉํ๊ธฐ
+
+> ๋ฐฑ์คํ๋ **๋น์ ํ์ผ๋ก ๋๊ธฐ ์๊ฐ์ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ**์ผ๋ก ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๋ ๋ฐฑ์คํ ์๊ฐ์ ์ํ์ ์ ์ ํด์ ๋๊ธฐ ์๊ฐ์ด ๋๋ฌด ๊ธธ์ด์ง์ง ์๊ฒ ํ์.
+
+#### ๐ ์ ๊น ๋ฐฑ์คํ์ ๋ํด์ ์ ๋ฆฌํ๊ณ ๊ฐ์\[chat gpt ๋ต๋ณ ์ฐธ๊ณ ]
+
+> ๋ฐฑ์คํ ์ ๋ต(Backoff Strategy)์ ์ฃผ๋ก ์ปดํจํฐ ๋คํธ์ํฌ์์ ์ฌ์ฉ๋๋ ์ ๋ต ์ค ํ๋๋ก, ์ผ์์ ์ธ ๋ฌธ์ ๋๋ ํผ์ก ์ํฉ์ด ๋ฐ์ํ์ ๋ ์ด๋ป๊ฒ ๋์ํ ์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ์ด ์ ๋ต์ ์ฃผ๋ก ์ฌ์๋(retry) ๋ฉ์ปค๋์ฆ๊ณผ ๊ด๋ จ์ด ์๋ค.
+
+**๋์ ๊ณผ์ **
+
+1. ์ผ์์ ๋ฌธ์ ๋ฐ์: ๋ฐ์ดํฐ ํจํท ์ ์ก์ด ์คํจํ๊ฑฐ๋ ์๋ต์ด ์๋ ๋ฑ์ ์ผ์์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
+2. ์ฌ์๋ ๊ฒฐ์ : ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋ฐ๋ก ๋ค์ ์๋๋ฅผ ํ์ง ์๊ณ , ์ ์ ๊ธฐ๋ค๋ฆฐ ํ์ ๋ค์ ์๋ํ ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
+3. ๊ธฐ๋ค๋ฆผ(๋ฐฑ์คํ)
+
+* ์ฌ์๋๋ฅผ ์ํด ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ ํฉ๋๋ค.
+* ์ด๋ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ๊ฒฐ์ ๋ ์ ์๋๋ฐ, ์ผ๋ฐ์ ์ผ๋ก ์ง์์ ์ธ ๋ฐฉ์์ด ์ฌ์ฉ๋ฉ๋๋ค. - ์ฆ, ์ฒ์์๋ ์งง์ ์๊ฐ ๋์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ, ์คํจํ ๊ฒฝ์ฐ ์ ์ฐจ ๋ ๊ธด ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ์์
๋๋ค. - ์ด๋ก์จ ๋คํธ์ํฌ ํผ์ก์ ํผํ๊ณ , ๋ฌธ์ ๋ฅผ ์ผ์์ ์ผ๋ก ํด๊ฒฐํ ๊ธฐํ๋ฅผ ๋๋ฆด ์ ์์ต๋๋ค.
+
+4. ์ฌ์๋: ์ผ์ ์๊ฐ ๋์ ๊ธฐ๋ค๋ฆฐ ํ์ ๋ค์ ์๋ํฉ๋๋ค.
+
+**๋ฐฑ์คํ ์ ๋ต์ ์ฅ์ **
+
+* ๋คํธ์ํฌ ํต์ ์์ ํจํท ์์ค, ์ง์ฐ, ํผ์ก ๋ฑ์ ๋ฌธ์ ์ ์ ์ฉํ๊ฒ ์ ์ฉ
+* ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ ์ ์ก ์ค์ ํจํท ์์ค์ด ๋ฐ์ํ์ ๋ ์ฆ์ ์ฌ์๋ํ์ง ์๊ณ , ์ ์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์ฌ์๋ํจ์ผ๋ก์จ ์ผ์์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ์ด๋ ๋ฐ์ดํฐ ์ ์ก์ ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋์ด๋ ๋ฐ์ ๊ธฐ์ฌ
+
+**๋ฐฑ์คํ ์์ ์ฝ๋๊ฐ ๋ญ๊ฐ ์์ด?**
+
+> ๋ฐฑ์คํ ์ ๋ต์ ์ฃผ๋ก ๋คํธ์ํฌ ํต์ ์์ ์ฌ์ฉ๋๋ ๊ฐ๋
์ด๋ฉฐ, ์ฝ๋๋ก ๊ตฌํ๋ ๋๋ ๋ค์ํ ์ํฉ์ ๋ง๊ฒ ์ ์ฉ๋ ์ ์์ต๋๋ค. ์๋๋ ๊ฐ๋จํ ์์ ์ฝ๋๋ก, ์ผ์ ์๊ฐ ๋์ ๊ธฐ๋ค๋ฆฐ ํ์ ์ฌ์๋ํ๋ ๊ฐ๋จํ ๋ฐฑ์คํ ์ ๋ต์ ๋ณด์ฌ์ค๋๋ค.
+
+์ด ์์ ์ฝ๋์์๋ sendDataToServer() ํจ์๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ์๋ฎฌ๋ ์ด์
ํ๋ฉฐ, ๋๋คํ ์ฑ๊ณต๋ฅ ๋ก ๋ฐ์ดํฐ ์ ์ก์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ์ดํฐ ์ ์ก์ด ์คํจํ ๊ฒฝ์ฐ ๋ฐฑ์คํ ์ ๋ต์ ์ ์ฉํ์ฌ ์ฌ์๋ํ๊ณ , ์ผ์ ์๊ฐ ๋์ ๊ธฐ๋ค๋ฆฐ ํ์ ๋ค์ ์๋ํฉ๋๋ค. ์ด๋ ๊ฒ ์ฌ์๋์ ๊ธฐ๋ค๋ฆผ์ ๋ฐ๋ณตํ๋ฉฐ ๋ฐ์ดํฐ ์ ์ก์ ์๋ํ๊ฒ ๋ฉ๋๋ค.
+
+```java
+import java.util.Random;
+
+public class BackoffExample {
+
+ public static void main(String[] args) {
+ int maxRetries = 3;
+ int retryDelay = 1000; // 1000 milliseconds = 1 second
+ int currentRetry = 0;
+
+ while (currentRetry < maxRetries) {
+ boolean success = sendDataToServer();
+
+ if (success) {
+ System.out.println("Data sent successfully!");
+ break;
+ } else {
+ System.out.println("Data sending failed. Retrying...");
+ currentRetry++;
+
+ if (currentRetry < maxRetries) {
+ System.out.println("Waiting before retrying...");
+ try {
+ Thread.sleep(retryDelay); // Wait before retrying
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ } else {
+ System.out.println("Max retries reached. Giving up.");
+ }
+ }
+ }
+ }
+
+ public static boolean sendDataToServer() {
+ // Simulate data sending with a random success rate
+ Random random = new Random();
+ double successRate = 0.7; // Simulate 70% success rate
+ return random.nextDouble() < successRate;
+ }
+}
+```
+
+#### ๐ ์ฒ๋ฅ๋ผ ํ์์ ๋๋นํ์ฌ ๋ฐฑ์คํ ์ ๋ต์ ์งํฐ๋ฅผ ์ถ๊ฐํ์.
+
+**์งํฐ๋**
+
+> ์์์ ์ง์ฐ์๊ฐ, ์๊ฐ์ ๋ถ๊ท์นํ ๋ณ๋์ด๋ ๋ถ๊ท์นํ ๊ฐ๊ฒฉ์ ๋ํ๋ด๋ ์ฉ์ด๋ก ์ฃผ๋ก ๋คํธ์ํฌ๋ ํ์ด๋ฐ๊ณผ ๊ด๋ จ๋ ์ํฉ์์ ์ฌ์ฉ๋๋ค.
+
+> ์ฒ๋ฅ๋ผ ํ์์ผ๋ก ๋ณต๊ตฌ ์ค์ด๋ ์๋น์ค ๋ค์ด์ ๋ง๊ธฐ ์ํด ์งํฐ๋ฅผ ์ถ๊ฐํ๋ฉด ํด๋ผ์ด์ธํธ๋ค์ ํน์ ๋ฒ์์์ ์์์ ๊ฐ์ ๋ฐฑ์คํ ์๊ฐ์ ๋ํ๋ค.
+
+* ์งํฐ๋ ์์๋ ์๊ฐ ๊ฐ๊ฒฉ๊ณผ ์ค์ ๋ฐ์ํ ์๊ฐ ๊ฐ๊ฒฉ ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๋ํ๋ด๋ฉฐ, ์ฃผ๋ก ๋คํธ์ํฌ ํจํท์ ์ ์ก ๊ฐ๊ฒฉ์ด๋ ๋์งํธ ์ ํธ์ ํ์ด๋ฐ ๋ฑ์์ ๋ฐ์ํ๋ค.
+* ์๋ฅผ ๋ค์ด, ์์ฑ ๋๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ์กํ๋ ๊ฒฝ์ฐ, ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ ๋คํธ์ํฌ ์ง์ฐ์ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ ๋ฑ์ผ๋ก ์ธํด ์ค์ ์ ์ก ๊ฐ๊ฒฉ์ด ์์๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ด๋ฌํ **์๊ฐ์ ์ธ ๋ถ๊ท์น์ฑ**์ ์งํฐ๋ผ๊ณ ํ๋ค.
+* ์งํฐ๋ ํต์ ์์คํ
์์ ์ค์ํ ๊ฐ๋
์ผ๋ก, ์งํฐ๊ฐ ํฌ๋ฉด ์ ํธ์ ๋์ฐฉ ์๊ฐ์ด ๋ถ์์ ํ๊ฒ ๋์ด ์์ฑ์ด๋ ์์ ๋ฐ์ดํฐ์์ ์๋ฆฌ๋ ์์์ด ๋๊ธฐ๊ฑฐ๋ ๋ถ์์ ํด์ง ์ ์๋ค.
+* ๋ฐ๋ผ์ ํต์ ์์คํ
์ค๊ณ๋ ๊ด๋ฆฌ์์ ์งํฐ๋ฅผ ์ต์ํํ์ฌ ์ ํธ์ ์์ ์ฑ๊ณผ ํ์ง์ ์ ์งํ๋ ๊ฒ์ด ์ค์
+
+**์ฒ๋ฅ๋ผ ํ์์ด๋**
+
+> ๋คํธ์ํฌ ์๋ฒ์ ์ผ์์ ์ธ ๋ฌธ์ ๊ฐ ์๊ฒจ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ์ผ๋ก ์ฅ์ ๋ฅผ ๊ฒช๋ ์ํฉ์์ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ๋ฐฑ์คํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ฉด ๋ชจ๋๊ฐ ๋์์ ์์ฒญ์ ๋ค์ ๋ณด๋ด๋ ํ์
+
+#### ๐ ๋ฐฑ์คํ ์ ๋ต๊ณผ ์งํฐ๋ฅผ ํจ๊ป ์ ์ฉํ ๋คํธ์ํฌ ํต์ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐ
+
+1. ๊ฐ์
+
+* A์ B๋ผ๋ ๋ ๋์ ์ปดํจํฐ๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ํฉ์ ๊ฐ์ ํฉ๋๋ค.
+* A๊ฐ ๋ฐ์ดํฐ๋ฅผ B์๊ฒ ๋ณด๋ด๋ ค๊ณ ํ ๋, **๋คํธ์ํฌ ์ง์ฐ๊ณผ ํจํท ์์ค์ด ๋ฐ์ํ ์ ์์ต๋๋ค.**
+
+2. ๋ฐฑ์คํ ์ ๋ต
+
+* A๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด **์ผ์ ์๊ฐ(๋ฐฑ์คํ ํ์) ๋์ ๊ธฐ๋ค๋ฆฐ ํ ์ฌ์ ์ก์ ์๋**ํ๋ ์ ๋ต์
๋๋ค.
+* ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ฐฑ์คํ ํ์์ ์ง์ ํ๊ณ ๊ทธ ์๊ฐ ๋์ ๊ธฐ๋ค๋ฆฐ ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ ์กํฉ๋๋ค.
+
+3. ์งํฐ ์ถ๊ฐ
+
+* ์งํฐ๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฑ์คํ ํ์์ ๋ถ๊ท์น์ฑ์ ๋ถ์ฌํฉ๋๋ค. ์ด๋ก ์ธํด ๋์ผํ ๋ฐฑ์คํ ํ์์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ์ ์ก์ด ๋์์ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ๋คํธ์ํฌ ์ํฉ์ ๋ ํผ์กํ์ง ์๊ฒ ๋ง๋ญ๋๋ค.
+
+4. ์์
+
+> ์๋๋ ๋ฐฑ์คํ ์ ๋ต๊ณผ ์งํฐ๋ฅผ ํจ๊ป ์ ์ฉํ ์์ ์ฝ๋. ์ฝ๋๋ ๋จ์ํ ์์์ด๋ฏ๋ก ์ค์ ์ํฉ์ ๋ง๊ฒ ์กฐ์ ์ด ํ์ํ ์ ์๋ค.
+
+```java
+import java.util.Random;
+
+public class BackoffWithJitterExample {
+ public static void main(String[] args) {
+ int backoffTime = 1000; // ์ด๊ธฐ ๋ฐฑ์คํ ํ์ (1์ด)
+ Random random = new Random();
+
+ for (int attempt = 1; attempt <= 5; attempt++) {
+ System.out.println("Attempt #" + attempt);
+
+ // Simulate network collision
+ if (random.nextInt(100) < 50) {
+ System.out.println("Collision occurred");
+
+ // Apply backoff with jitter
+ int jitter = random.nextInt(backoffTime);
+ int waitTime = backoffTime + jitter;
+
+ System.out.println("Applying backoff with jitter: " + waitTime + " ms");
+ try {
+ Thread.sleep(waitTime);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ } else {
+ System.out.println("Data sent successfully");
+ break;
+ }
+
+ // Exponential backoff: double the backoff time for next attempt
+ backoffTime *= 2;
+ }
+ }
+}
+
+```
+
+#### ๐ ์คํจํ ์์ฒญ์ ๋ฌดํฑ๋๊ณ ์ฌ์๋ ํ์ง๋ ๋ง์
+
+> ์ค๊ณ ์์ ์์ ์ฒ๋ฆฌ๋ฅผ ์ผ๋์ ๋์ง ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ์ฐจ๋ผ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ **ํฌ๋์**ํ๋๋ก ๋๋๋ ํธ์ด ๋ซ๋ค. ์ด๋ฐ ๋ฐฉ๋ฒ์ ๋นจ๋ฆฌ ์คํจํ๊ธฐ๋ผ๊ณ ํ๋ค.
+
+**์ ํ๋ฆฌ์ผ์ด์
ํฌ๋์**
+
+* ์ ํ๋ฆฌ์ผ์ด์
์ด "ํฌ๋์"ํ๋ค๋ ๊ฒ์ ํด๋น ์ ํ๋ฆฌ์ผ์ด์
์ด ์์์น ๋ชปํ ์ค๋ฅ ๋๋ ์์ธ ์ํฉ์ผ๋ก ์ธํด ์ ์์ ์ผ๋ก ์๋ํ์ง ์๊ณ ๋น์ ์์ ์ผ๋ก ์ข
๋ฃ๋๋ ์ํฉ
+* ๋นจ๋ฆฌ ์คํจํ๋ฉด ์ฌ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ฒํ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์๋ค.
+* ์คํจ ์ํฉ์ ์ ํํ๋ ๋ฐฉ์์ ์๊ฐํด์ผ ํ๋ฉฐ, ์ฝ๊ฒ ๋๋ฒ๊น
ํ ์ ์๋๋ก **์๋ฌ ๊ด๋ จ ์ ๋ณด๋ ๋ฐ๋์ ํ์ธ์ด ๊ฐ๋ฅํด์ผ ํ๋ค.**
+
+### 2. ์ฌ์๋ ์ฒ๋ฆฌํ๋ ๊ฐ์ ์ข์ ๋ฐฉ๋ฒ : ์์คํ
์ ๋ฉฑ๋ฑ์ฑ์ ๋ถ์ฌํ์
+
+#### ๐ ๋ฉฑ๋ฑ์ฑ ์๋ ์์คํ
๊ตฌํ
+
+> ์๋ฅผ ๋ค์ด, ์ด๋ค ์น ์๋น์ค์ ์ฃผ๋ฌธ ์์ฑ ๊ธฐ๋ฅ์ ๊ฐ์ ํด๋ด
์๋ค. ์ด ๊ธฐ๋ฅ์ ์ฃผ๋ฌธ์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ์์
์ ์ํ ์ด ๋ ๋ฉฑ๋ฑ์ฑ์ ์์น์ ์งํค๋ฉด ์๋์ ๊ฐ์ ์ํฉ์์๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํด์ผ ํ๋ค
+
+**์์**
+
+1. ์ฃผ๋ฌธ ์์ฑ ์๋ 1ํ: ์ฌ์ฉ์ A๊ฐ ์ํ X๋ฅผ ์ฃผ๋ฌธํ๋ ค๊ณ ํจ. ์ฃผ๋ฌธ์ด ์์ฑ๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋จ.
+2. ์ฃผ๋ฌธ ์์ฑ ์๋ 2ํ: ์ฌ์ฉ์ A๊ฐ ๋์ผํ ์ํ X๋ฅผ ๋ค์ ์ฃผ๋ฌธํ๋ ค๊ณ ํจ.
+3. ๋ฉฑ๋ฑ์ฑ์ ์งํจ๋ค๋ฉด ์ด ์์
์ ์ด์ ์ ์ฃผ๋ฌธ์ด ์ด๋ฏธ ์์ฑ๋์์์ ๊ฐ์งํ๊ณ ๋์ผํ ์ฃผ๋ฌธ์ ์ค๋ณต ์์ฑํ์ง ์์์ผ ํจ.
+4. ์ฃผ๋ฌธ์ ์ด๋ฏธ ์กด์ฌํ๋ฏ๋ก ์๋ก์ด ์ฃผ๋ฌธ์ด ์์ฑ๋์ง ์์์ผ ํจ.
+5. ์ด๋ ๊ฒ ๋ฉฑ๋ฑ์ฑ์ ์งํค๋ ๊ฒ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ์ค๋ณต ์์ฑ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋๋ค. ์ด์ ์ ์ฌํ๊ฒ ๋ค์ํ ์์
์ด๋ API ํธ์ถ์์ ๋ฉฑ๋ฑ์ฑ์ ๊ณ ๋ คํ์ฌ ์ค๋ณต ์์
์ด๋ ๋ฐ์ดํฐ ์ค๋ณต์ ๋ฐฉ์งํ ์ ์๋ค.
+
+**๋ฉฑ๋ฑ์ฑ์ด๋?**
+
+> ๋์ผํ ์์
์ ์ฌ๋ฌ ๋ฒ ์คํํด๋ ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋จ์ ๋งํ๋ค. ๋ชจ๋ ์์
์ ๋ฉฑ๋ฑ ์์
์ผ๋ก ๊ตฌํํ๋ฉด ์์คํ
์ํธ์์ฉ์ด ํจ์ฌ ํธํด์ง๋ฉฐ ์๋ฌ๋ ํ์ ํ ์ค์ด๋ ๋ค,
+
+1. ์๋ฅผ ๋ค์ด **์ด๋ค ๊ฐ์ ํด์์
์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ฉฑ๋ฑ ์์
**์ด๋ค.
+
+* ์ด์ ๋ ๋ช ๊ฐ์ ๊ฐ์ ์ง์ด๋๋์ง ํ๋๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
+
+2. ์๊ฒฉ API๋ **ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ ์์ฒญ๋ง๋ค ์ ์ผํ ID๋ฅผ ์ง์ ํ๊ฒ ํ๋ฉด** ๋ฉฑ๋ฑ์ฑ ๊ตฌํ ๊ฐ๋ฅ
+
+* ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์๋ํ ๋ ์คํจํ ๊ฒ๊ณผ ๋์ผํ ์์ฒญ ID๋ฅผ ์ ๋ฌํ๋ฉด ๋๋ค.
+* ๊ทธ๋ฌ๋ฉด ์๋ฒ๋ ์ด๋ฏธ ํด๋น ์์ฒญ์ด ์ฒ๋ฆฌ๋ ๊ฒฝ์ฐ์๋ ํด๋น ์์
์คํํ์ง ์๋๋ค.
+
+### 3. ๋ฆฌ์์ค๋ฅผ ํด์ ํ์.
+
+#### ๐ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํด์ ํด์ผ ํ๋ค.
+
+> ๋ ์ด์ ํ์๋ก ํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ, ๋ฐ์ดํฐ ๊ตฌ์กฐ, ๋คํธ์ํฌ ์์ผ, ํ์ผ ํธ๋ค ๋ชจ๋ ํด์ ํ์.
+
+1. ์ด์์ฒด์ ๋ ํ์ผ ํธ๋ค๊ณผ ๋คํธ์ํฌ ์์ผ์ ์ํ ๊ณต๊ฐ์ด ์ ํด์ก๋๋ฐ ๊ฐ๋ ์ฐจ๋ฉด, ์๋ก ํธ๋ค, ์์ผ ๋ชจ๋ ์์
์ด ์คํจํ๋ค.
+2. ๋คํธ์ํฌ ์์ผ์ด ๋์๋๋ฉด ๋ถํ์ํ ์ฐ๊ฒฐ์ ๊ณ์ ๋จ์์์ด ์ฐ๊ฒฐ ํ์ด ๊ฐ๋ ์ฐจ๊ฒ ๋๋ค.
+3. f.close๋ฅผ ์คํํ๊ธฐ ์ ์ฝ์ค ์คํ ์คํจ๋ก ํ์ผ ํฌ์ธํฐ๋ฅผ ๋ซ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์ธ์ด๊ฐ ์๋ํด์ ๋ฅผ ์ง์ํ์ง ์๋๋ค๋ฉด `try/finally`๋ก ํ์ผ ํธ๋ค ์์ ํ๊ฒ ๋ซ๊ฒ ํด์ค์ผ ํจ
+
+```
+f = open(`foo.txt`, 'w')
+#...
+f.close()
+```
+
+4. ํ๋ ๊ฐ๋ฐ ์ธ์ด๋ ์๋๋ฆฌ์์ค ํด์ ์ง์, rust๋ `์๋ฉธ์ ๋ฉ์๋`๋ก, ํ์ด์ฌ์ `with ๊ตฌ๋ฌธ`
+
+```
+with open('foo.txt') as f:
+#...
+```
+
+## ๋ฌธ์ ์์ธ์ ์ฐพ๊ธฐ ์ํ ๋ก๊น
๋ฐฉ๋ฒ
+
+### ํ๋กค๋ก๊ทธ
+
+#### ๐ ๋ก๊ทธ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ ์ฝ๋์ ์คํ์ ์ดํดํ๊ฑฐ๋ ์์ ํ๋ก๊ทธ๋จ์ ๋๋ฒ๊น
ํ ์ ์๋ ์ฝ๊ณ ํธ๋ฆฌํ ๋ฐฉ๋ฒ
+
+> ์ฝ๋๋ฅผ ์ฝ๊ฒ ์ด์ํ๊ณ ๋๋ฒ๊ทธํ ์ ์๋๋ก ๋ก๊น
ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์. ๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํด์ ์ด์์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก๊ทธ ์ ์กฐ์ ํ ์ ์๊ฒ ํ์. ๋ก๊ทธ๋ ์์์ ์ด๊ณ ๋น ๋ฅด๋ฉฐ ์์ ํ๊ฒ ๋ค๋ค์ผ ํ๋ค.
+
+1. ๊ฐ๋ฐ ์ธ์ด๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํด ์ธ์ ์ด๋ค ๊ฒ์ ๋ก๊ทธ์ ๊ธฐ๋กํ ์ง ์ ์ดํ๋ ์ฐ์ฐ์๋ฅผ ์ ๊ณตํ๋ ์ ๊ตํ `๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ`๋ฅผ ๊ฐ์ถ๊ณ ์๋ค.
+2. ์ด๋ฌํ ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ๋ก๊ทธ ๋ ๋ฒจ์ ์ด์ฉํด ๋ก๊ทธ ์ ์กฐ์ ํ๊ฑฐ๋ ๋ก๊ทธ ํ์ ์ ์ด ๊ฐ๋ฅ
+
+#### ๐ java์ ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
+
+> ์ด ์ธ์๋ ๋ค์ํ ๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฉฐ, ์ ํํ ๋ ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ๊ณผ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์
+
+**1. Log4j 2**
+
+* Apache Log4j 2๋ Java์ ๋ก๊น
ํ๋ ์์ํฌ๋ก ๋งค์ฐ ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ๋ก๊น
๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
+* ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ๋ค์ํ ์ถ๋ ฅ ๋์์ผ๋ก ๋ผ์ฐํ
ํ๊ณ , ๋ก๊น
๋ ๋ฒจ ๋ฐ ๋ก๊ทธ ํ์ ์ค์ ๋ฑ์ด ๊ฐ๋ฅํ๋ค.
+
+**2. SLF4J (Simple Logging Facade for Java)**
+
+* SLF4J๋ ๋ก๊น
ํ๋ ์์ํฌ์ ์ถ์ ๊ณ์ธต์ผ๋ก, ๋ค์ํ ๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
+* ์ฃผ๋ก ๋ก๊ทธ API์ ์ถ์ํ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํด๋ ์ฝ๋ ์์ ์ ์ต์ํํ ์ ์์ผ๋ฉฐ, ์ค์ ๋ก SLF4J๋ฅผ ๊ตฌํํ๋ ๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Logback์ ๋ง์ด ์ฌ์ฉํ๋ค.
+
+\*\*3. Logback \*\*
+
+* Logback์ SLF4J์ ๊ตฌํ์ฒด๋ก, Log4j์ ํ์ ์ ํ์ผ๋ก ๊ฐ๋ฐ๋ ๊ฒ์ผ๋ก Logback์ ๊ธฐ๋ณธ์ ์ธ ์ค์ ์ผ๋ก๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ณต์กํ ์ค์ ๋ฐ ์ ์ฐํ ๋ก๊น
๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
+
+**4. java.util.logging (JUL)**
+
+* ์๋ฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋ ๋ก๊น
ํ๋ ์์ํฌ๋ก, JUL์ ์ฌ์ฉํ๋ฉด ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ํ์ํ์ง ์๋๋ค.
+* ๊ธฐ๋ฅ์ ๊ฐ๋จํ์ง๋ง ๊ฐ๋ณ๊ณ ํ์คํ๋ ๋ก๊น
์ ์ํ ์ ํ์ง๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
+
+**5. Log4j 1**
+
+* Apache Log4j 1์ ๋ก๊น
ํ๋ ์์ํฌ๋ก ์ ๋ช
ํ๋ฉฐ ์์ ๋ถํฐ ๋ง์ด ์ฌ์ฉ๋์ด์์ผ๋ ํ์ฌ๋ Log4j 2์ ๋น๊ตํ์ฌ ์ ์ง๋ณด์ ๋ฐ ๋ณด์ ์ด์๋ก ์ธํด ์ฌ์ฉ์ด ๊ถ์ฅ๋์ง ์๋๋ค.
+
+### 1. ๋ก๊ทธ ๋ ๋ฒจ์ ์ฌ์ฉํ์
+
+> ๋ก๊น
ํ๋ ์์ํฌ๋ ์ด์์๊ฐ ์ค์๋์ ๋ฐ๋ผ ๋ฉ์ธ์ง๋ฅผ ํํฐ๋งํ ์ ์๋๋ก ๋ก๊ทธ ๋ ๋ฒจ์ ์ง์ํ๋ค.
+
+1. ์ด์์๊ฐ ๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํ๋ฉด ์ค์ ํ ๋ ๋ฒจ๋ณด๋ค ์์ ๋ ๋ฒจ์ ๋ก๊ทธ๋ ๋ชจ๋ ๊ธฐ๋ก๋๋ ๋ฐ๋ฉด\*\* ๊ทธ๋ณด๋ค ๋ฎ์ ๋ ๋ฒจ์ ๋ก๊ทธ๋ ๊ธฐ๋ก๋์ง ์๋๋ค.\*\*
+2. ๋ก๊ทธ ๋ ๋ฒจ์ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ์์ธํ ๋๋ฒ๊น
๋ก๊ทธ๋ถํฐ ์ ์์ ์ธ ์ด์ ์ํฉ์์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ธฐ๋ก๋๋ ๋ก๊ทธ๊น์ง, ์ฃผ์ด์ง ์ํฉ์ ๋ง์ถฐ์ ๋ก๊ทธ์ ์ ์กฐ์ ๊ฐ๋ฅ
+
+#### ๐ ์์
+
+> ์๋ฐ์ log4j.properties ํ์ผ์ ์ผ๋ถ๋ก์, ๋ฃจํธ์๋ ERROR ๋ ๋ฒจ์ ์์ธํ ๋ก๊ทธ ์ง์ ํ๊ณ com.foo.bar ํจํค์ง ๋ด์ ์ฝ๋์์๋ INFO ๋ ๋ฒจ์ ๋ก๊ทธ ์ง์
+
+```JAVA
+# ๋ฃจํธ ๋ก๊ฑฐ์๋ ERROR **ํ
์คํธ**๋ ๋ฒจ์ ์ง์ ํ๊ณ fout๋ผ๋ ์ด๋ฆ์ FileAppender๋ฅผ ์ฌ์ฉํ๋ค,
+log4j.rootLogger = Error, fout
+# com.foo.bar ํจํค์ง๋ INFO ๋ ๋ฒจ ์ง์
+log4j.logger.com.foo.bar = INFO
+```
+
+#### ๐ ๋ก๊ทธ ๋ ๋ฒจ์ ๋ถ๋ฅ
+
+1. TRACE
+
+> ์ ๋ฆฌํ์๋ฉด,
+>
+> * ์์: ํน์ ๋ฉ์๋๋ ํจ์์ ํธ์ถ๊ณผ ๋ฐํ ๊ฐ์ ๋ก๊น
ํ์ฌ ๋๋ฒ๊น
์ ํธ์ถ ํ๋ฆ์ ํ์ธํ ๋ ์ฌ์ฉ.
+> * ์ ์ฉ ๋ฐฉ๋ฒ: ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ TRACE ๋ ๋ฒจ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์์
์ด๋ ๋ฉ์๋์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ก๊น
+
+* **ํน์ ํจํค์ง๋ ํด๋์ค์๋ง ์ผ์ง๋ฉฐ ์ต๋ํ ์์ธํ ๋ด์ฉ์ ์ถ๋ ฅ**ํ๋ ๋ ๋ฒจ
+* ๊ฐ๋ฐ ํ๊ฒฝ ์ด์ธ์์๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๋ค.
+* **์ค ๋จ์ ๋ก๊ทธ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ธ**ํ๋ ๋ฐ ์ฌ์ฉ
+* TRACE ๋ก๊ทธ ๋ ๋ฒจ์ ์์ฃผ ์ฌ์ฉํ๋ ํธ์ด๋ผ๋ฉด ๋ก๊ทธ ์ถ๋ ฅ ๋์ , `๋๋ฒ๊ฑฐ`๋ฅผ ์ด์ฉํด ์ฝ๋์ ์คํ ๊ณผ์ ์ ํ์ธํ๋ ๊ฒ์ด ์ข๋ค
+
+2. DEBUG
+
+> ์ ๋ฆฌํ์๋ฉด,
+>
+> * ์์: ์ฌ์ฉ์์ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ค๊ฐ ๊ณผ์ ์ ๋ก๊น
ํ์ฌ ๋๋ฒ๊น
์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ณผ์ ์ ํ์ธํ ๋ ์ฌ์ฉ.
+> * ์ ์ฉ ๋ฐฉ๋ฒ: ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ DEBUG ๋ ๋ฒจ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ํ ์ํ ๋ณ๊ฒฝ ๋๋ ์ค๊ฐ ๊ณผ์ ์ ๋ก๊น
+
+* **ํ๋ก๋์
์ํฉ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ ํฉํ ๋ ๋ฒจ**์ด๋ค.
+* ๋๋ฒ๊ทธ ๋ ๋ฒจ ๋ก๊น
์ ๋๋ฌด ๋ง์ด ์ฌ์ฉ ์ ๋๋ฒ๊น
ํ ๋ ํ์ํ ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ ์ด๋ ค์์ง๋ค.
+* ์ด๋ฐ ๋ฉ์ธ์ง๋ TRACE ๋ ๋ฒจ๋ก ์ง์ ํ์.
+
+3. INFO
+
+> ์ ๋ฆฌํ์๋ฉด,
+>
+> * ์์: ์ ํ๋ฆฌ์ผ์ด์
์ ์์๊ณผ ์ข
๋ฃ ์์ , ์๋น์ค ํฌํธ ์ค์ ๋ฑ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ๋ก๊น
ํ ๋ ์ฌ์ฉ.
+> * ์ ์ฉ ๋ฐฉ๋ฒ: ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ INFO ๋ ๋ฒจ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ์ ๋ณด๋ฅผ ๋ก๊น
+
+* **์ ํ๋ฆฌ์ผ์ด์
์ํ์ ๋ํด ์์๋๋ฉด ์ข์ ๋งํ ์ ๋ณด**๋ฅผ ์ํ ๋ ๋ฒจ์ด๋ค.
+* ์ฆ ๋ฌธ์ ์ ์ ํ์
ํ๊ธฐ ์ํ ์ฉ๋๊ฐ ์๋๋ค.
+* ๋ณดํต `์๋น์ค ์์` ์ด๋ `5050๋ฒ ํฌํธ ์ฌ์ฉ`๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ํ ๋ฉ์ธ์ง๋ฅผ ์ด INFO ๋ ๋ฒจ๋ก ์ถ๋ ฅํ๋ค.
+* INFO๋ **๊ธฐ๋ณธ ๋ก๊ทธ ๋ ๋ฒจ์ด๋, ์์ํ ๋ด์ฉ์ ๊ธฐ๋กํ์ง ๋ง์.**
+* `๋ง์ฝ์ ์ํ` ๋ก๊ทธ๋ TRACE๋ DEBUG๋ ๋ฒจ๋ก ์ถ๋ ฅํ์
+* INFO ๋ ๋ฒจ ๋ก๊ทธ๋ ์ ์์ ์ธ ์ด์ ์ํฉ์์ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
+* ๋ฌ์คํธ์์ INFO ๋ ๋ฒจ ์ถ๋ ฅํ๋ ์์
+
+> ์์ฒญ์ด ์คํจํ ์์ธ์ ์ ๋ฐํ ์๋ฌ๋ ํฌํจ๋์ด ์๋๋ฐ ๊ทธ๋ฐ๋ฐ๋ info ๋ ๋ฒจ์ ์ด ์ด์ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋์ผ๋ก ์ฌ์๋ ํ๋ฏ๋ก ์ถ๊ฐ ๋์ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
+
+```RUST
+info!("Failed request : {}, retrying", e);
+```
+
+4. WARN
+
+> ์ ๋ฆฌํ์๋ฉด,
+>
+> * ์์: ์๋น์ค ๋ฆฌ์์ค๊ฐ ํ๊ณ์น์ ๋ค๋ค๋ฅธ ์ํฉ์ด๋ ์์์น ๋ชปํ ๋์์ ๋ก๊น
ํ์ฌ ๊ฒฝ๊ณ ํ ๋ ์ฌ์ฉ.
+> * ์ ์ฉ ๋ฐฉ๋ฒ: ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ WARN ๋ ๋ฒจ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ํ ๋งํ ์ํฉ์ ๋ก๊น
+
+* **์ ์ฌ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ ๋งํ ์ํฉ์ ๋ํ ๋ฉ์ธ์ง ์ถ๋ ฅ**์ ์ํ ๋ ๋ฒจ
+* ์ด๋ค `๋ฆฌ์์ค๊ฐ ํ๊ณ์น์ ๋ค๋ค๋ฅด๊ณ ์๋ค๋ฉด` ๊ฒฝ๊ณ ๋ฉ์ธ์ง ์ถ๋ ฅํ๊ธฐ ์ ํฉ
+* WARN ๋ ๋ฒจ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅ ํ ๋๋ ๊ทธ ๋ฉ์ธ์ง๋ฅผ ํ์ธํ ์ฌ๋์ด ์ทจํด์ผ ํ ๊ตฌ์ฒด์ ์ธ ๋์์ด ์์ด์ผ ํ๋ฉฐ, ์๋ค๋ฉด INFO๋ ๋ฒจ๋ก ์ฎ๊ธฐ์
+
+5. ERROR
+
+> ์ ๋ฆฌํ์๋ฉด,
+>
+> * ์์: ์์ธ ๋ฐ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์คํจ ๋ฑ ์ค๋ฅ ์ํฉ์ ๋ํ ์ ๋ณด๋ฅผ ๋ก๊น
ํ ๋ ์ฌ์ฉ.
+> * ์ ์ฉ ๋ฐฉ๋ฒ: ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ERROR ๋ ๋ฒจ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฅ ์ํฉ์ ๋ํ ์ ๋ณด ๋ฐ ์คํ ํธ๋ ์ด์ค ๋ฑ์ ๋ก๊น
ํฉ๋๋ค.
+
+* ์ดํด๋ด์ผ ํ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ์ํ ๋ ๋ฒจ
+* **๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ธฐ๋ก ์์
์ด ์คํจํ๋ฉด ๋์ฒด๋ก ERROR ๋ ๋ฒจ ๋ก๊ทธ์ ๊ธฐ๋ก**
+* ๋ฌธ์ ๋ฅผ ๋ถ์ํ๊ธฐ์ ์ถฉ๋ถํ ์ ๋ณด ์ ๊ณต
+* ๊ด๋ จ ์คํ ์ถ๊ฐ์ ๊ณผ ์ํํธ์จ์ด๊ฐ ์คํ๋ ๊ฒฐ๊ณผ ๋ฑ ์์ธํ ๋ด์ฉ ๋ช
ํํ๊ฒ ๊ธฐ๋ก
+
+6. FATAL
+
+* ๊ฐ์ฅ ์ํํ ์์ค์ ๋ฉ์ธ์ง ์ถ๋ ฅํ๊ธฐ ์ํ ๋ ๋ฒจ -\*\* ํ๋ก๊ทธ๋จ์ด ์ฌ๊ฐํ ์ํฉ์ ๋ง๋ฅ๋จ๋ ค ์ฆ์ ์ข
๋ฃ์์ผ์ผ ํ๋ค๋ฉด\*\* ๊ทธ ๋ฌธ์ ๋ฅผ ์ ๋ฐํ ์์ธ์ FATAL ๋ ๋ฒจ ๋ก๊ทธ ๊ธฐ๋ก
+* ๋ณต๊ตฌ ์ง์ ์ด๋ ๋ถ์ ๊ด๋ จ ๋ฐ์ดํฐ ํ๋ก๊ทธ๋จ ์ํ ๊ด๋ จ๋ ์ปจํ
์คํธ๋ ๋ฐ๋์ ๊ธฐ๋ก
+
+#### ๐ java ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ฉํด์ ๋ก๊ทธ ๋ ๋ฒจ ์ง์ ๋ฐฉ๋ฒ
+
+**1. ๋ฉ์๋ ํธ์ถ์ ํตํ ๋ก๊ทธ ๋ ๋ฒจ ์ง์ **
+
+SLF4J์ Logback์ ์ฌ์ฉํ ๋๋ ๋ก๊ทธ ๋ ๋ฒจ์ ์ง์ ํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. SLF4J์ ๋ก๊ฑฐ(Logger) ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์จ ํ ํด๋น ์ธ์คํด์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ก๊ทธ๋ฅผ ๋จ๊ธธ ์ ์๋ค. ๋ฉ์๋์๋ ๋ก๊ทธ ๋ ๋ฒจ์ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ค.
+
+```java
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MyClass {
+ private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
+
+ public void myMethod() {
+ logger.trace("This is a trace level log.");
+ logger.debug("This is a debug level log.");
+ logger.info("This is an info level log.");
+ logger.warn("This is a warn level log.");
+ logger.error("This is an error level log.");
+ }
+}
+```
+
+**2. ์ค์ ํ์ผ์ ํตํ ๋ก๊ทธ ๋ ๋ฒจ ์ง์ **
+
+Logback์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ logback.xml ๋๋ logback.groovy ์ค์ ํ์ผ์ ํตํด ๋ก๊ทธ ๋ ๋ฒจ์ ์ง์ ํ ์ ์๋ค. ์ค์ ํ์ผ์์๋ ๋ค์ํ ๋ก๊ทธ ๋ ๋ฒจ์ ๊ฐ๊ฐ์ ๋ก๊ทธ ์ถ๋ ฅ ๋์์ ์ง์ ํ ์ ์๋ค.
+
+```java
+
+
+
+
+ %-4relative [%thread] %-5level %logger{35} - %msg%n
+
+
+
+
+
+
+
+
+```
+
+### 2. ๋ก๊ทธ๋ ์์์ ์ผ๋ก ์์ฑํ์
+
+#### ๐ ์์์ ์ด๋ ๋ญ๊น..
+
+> `์์์ ์ผ๋ก ์์ฑํ์`๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ์์ ๋งค์ฐ ์ค์ํ ์์น ์ค ํ๋๋ฅผ ๋ํ๋
๋๋ค. ์ด ์์น์ ์์
์ด ๋ ์์ ์กฐ๊ฐ์ผ๋ก ๋ถํด๋๊ฑฐ๋ ์ค๊ฐ์ ์ค๋จ๋์ง ์๊ณ ์์ ํ ์คํ๋๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
+
+1. ์ฌ๊ธฐ์ `์์์ `์ด๋ ์์
์ด ๋ ์ด์ ๋๋ ์ ์๋ ์ต์ ๋จ์
+2. ์ด ๋จ์์์ ์์
์ ๋ ์ด์ ๋ถํด๋๊ฑฐ๋ ์ค๋จ๋ ์ ์์ด์ผ ํ๋ค. ์์์ ์์
์ ๋ค์ ๋ ๊ฐ์ง ํน์ฑ
+
+* `๋ถํด ๋ถ๊ฐ๋ฅ(Indivisible)`: **์์์ ์์
์ ๋ ์์ ๋จ์๋ก ๋๋ ์ ์์ด์ผ ํ๋ค.** ์์
์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ๊ณ๋ ๋ถํด๋๊ฑฐ๋ ์ฌ์ ์๋์ง ์๊ณ ์คํ๋์ด์ผ ํ๋ค.
+* `์ค๋จ ๋ถ๊ฐ๋ฅ(Undivisible)`: **์์์ ์์
์ ์ค๊ฐ์ ์ค๋จ๋์ง ์๊ณ ์์ ํ ์คํ**๋์ด์ผ ํ๋ค. ๋ง์ฝ ์์
์ ์ผ๋ถ๋ง ์คํ๋๊ณ ์ค๋จ๋๋ฉด ์ผ๊ด์ฑ๊ณผ ์ ํฉ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
+
+#### ๐ ๋ก๊ทธ๋ฅผ ์์์ ์ผ๋ก ์์ฑ
+
+> ๋ก๊ทธ๋ฅผ ์์์ ์ผ๋ก ์์ฑํ๋ค๋ ๊ฒ์ ๋ก๊ทธ ๋ฉ์์ง๊ฐ ํ ๋ฒ ์์ฑ๋๋ฉด ๋ถํด๋๊ฑฐ๋ ์ค๋จ๋์ง ์๊ณ ์์ ํ ๊ธฐ๋ก๋์ด์ผ ํ๋ค๋ ์๋ฏธ
+
+* ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์ฐ์์ ์ผ๋ก ์์ฑํ ๋ ๊ฐ ๋ก๊ทธ ๋ฉ์์ง๊ฐ ์์๋๋ก ๊ธฐ๋ก๋๋ ๊ฒ์ ๋ณด์ฅํ๊ณ , ์ค๊ฐ์ ์์
์ด ์ค๋จ๋๊ฑฐ๋ ๋๋ฝ๋์ง ์๋๋ก ํด์ผ ํ๋ค. ์ด๋ฅผ ํตํด ๋ก๊ทธ๋ฅผ ํตํด ์์คํ
์ํ๋ ์ด๋ฒคํธ์ ๋ํ ์ ํํ๊ณ ์ผ๊ด๋ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.
+
+#### ๐ ๋ง์ผ ๋ฐ์ดํฐ์ ๊ฒฐํฉํ์ ๋๋ง ์ ๋ณด๊ฐ ์ ์ฉํ๋ค๋ฉด
+
+1. ํ ๋ฉ์ธ์ง์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํ์.
+2. ๋ก๊ทธ ์์ง๊ธฐ๋ ๊ด๋ จ ์ ๋ณด๋ฅผ ํ ์ค์ ํํํ๋ ๋ก๊ทธ๋ฅผ ๋ ์ ์ฒ๋ฆฌ
+
+> but, ํน์ ์์๋๋ก ๋ณด์ด์ง ์์ ์ ์์ผ๋ฉฐ, ๋ก๊ทธ ์ ๋ ฌ ์ ์์คํ
์๊ฐ์ ์์กดํ์ง๋ง์. ์์คํ
์๊ฐ์ ๋ฆฌ์
๋๊ฑฐ๋ ํธ์คํธ ๋ง๋ค ์กฐ๊ธ์ฉ ๋ค๋ฅผ ์ ์์
+
+3. ๋ก๊ทธ ๋ฉ์ธ์ง์ ์ค๋ฐ๊ฟ ๋ฌธ์๋ ํผํ์ => ํนํ WARNING ๋ก๊ทธ์ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๋ฉ์ธ์ง์ ํผํฉ์ด ๋๊ธฐ ๋๋ฌธ์ **ํ ์ค๋ก ์ถ๋ ฅ ๋ถ๊ฐํ๋ค๋ฉด ๊ณ ์ ํ ID๋ฅผ ํฌํจ์์ผ ๋์ค์ ์ฐ๊ฒฐํ ์ ์๊ฒ ํ์.**
+
+### 3. ๋ก๊ทธ๋ ์ ์ํ๊ฒ ๊ธฐ๋กํ์.
+
+> ๋ก๊ทธ๋ฅผ ๋๋ฌด ๊ธฐ๋กํ๋ฉด ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ค. **๋ก๊ทธ๋ ๋์คํฌ๋ ์ฝ์, ์๊ฒฉ ์์คํ
๋ฑ ์ด๋๊ฐ์ ๋ฐ๋์ ๊ธฐ๋ก๋์ด์ผ ํ๋ฉฐ, ๊ธฐ๋ก๋๊ธฐ ์ ํ ๋ฌธ์์ด๋ก ๊ฒฐํฉ**ํด์ผ ํ๋ค.
+
+#### ๐ ๋ฌธ์์ด ๊ฒฐํฉ
+
+> ๋งค์ฐ ๋๋ฆฌ๊ฒ ์งํ๋๋ฉฐ, ์ฑ๋ฅ์ด ์ค์ํ ๋ฃจํ์ ์
์ํฅ์ ๋ฏธ์น๋ค,
+
+1. ๊ฒฐํฉ์ ์๋ํ๋ ๋ฌธ์์ด์ด ๋ก๊ทธ ๋ฉ์๋์ ์ ๋ฌ๋๋ฉด ๋ก๊ทธ ๋ ๋ฒจ๊ณผ ์๊ด ์์ด ๊ฒฐํฉ ์คํ ์ด์ : ์๋์ ์ธ์๋ ๋ฉ์๋์ ์ ๋ฌ๊ธฐ ์์ ํ๊ฐ๊ฐ ์ด๋ค์ง๊ธฐ ๋๋ฌธ
+2. ํ๋ ์์ํฌ๊ฐ ์ง์ํ๋ค๋ฉด, ํ๋ผ๋ฏธํฐํ ๋ก๊น
์ ์ฌ์ฉํ์
+3. JAVA์ ๋ก๊ทธ ํธ์ถ ์ ๋ฌธ์์ด ๊ฒฐํฉ ๋ฐฉ๋ฒ 3๊ฐ์ง
+
+```JAVA
+while(message.size() > 0){
+ Message m = message.poll();
+
+ // ์ด ๋ฌธ์์ด์ trace ๋ ๋ฒจ์ด ๋นํ์ฑํ๋ผ ์์ด๋ ๊ฒฐํฉ์ด ์คํ
+ log.trace("got message: "+m);
+
+ // ์ด ๋ฌธ์์ด ์ญ์ trace ๋ ๋ฒจ์ด ๋นํ์ฑํ๋ผ ์์ด๋ ๊ฒฐํฉ์ด ์คํ
+ log.trace("got message : {}".format(m));
+
+ // ์ด ๋ฌธ์์ด์ trace ๋ ๋ฒจ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ์๋ง ๊ฒฐํฉ์ ์คํํ๋ฏ๋ก ๋ ๋น ๋ฅด๋ค. => ํ๋ผ๋ฏธํฐํ // ๋ก๊น
+ log.trace("got message : {}", m);
+}
+```
+
+#### ๐ ๋ก๊ทธ์ ์ ์ํ ๊ธฐ๋ก 1 : ํ๋ผ๋ฏธํฐํ ๋ก๊น
+
+> ๋ก๊ทธ ๋ฉ์์ง์ ๋ด์ฉ์ ๋์ ์ผ๋ก ์์ฑํ๊ณ ๋ก๊น
ํ๋ ๊ธฐ๋ฒ,\*\* ์ด๋ฅผ ํตํด ๋ก๊ทธ ๋ฉ์์ง์ ๋ณ์๋ ๋ฐ์ดํฐ ๊ฐ์ ์ฝ๊ฒ ํฌํจ์ํฌ ์ ์๋ค.\*\* ํ๋ผ๋ฏธํฐํ ๋ก๊น
์ ๋ก๊ทธ ๋ฉ์์ง์ ๋ณ์๋ฅผ ์ง์ ๊ฒฐํฉํ๋ ๋์ , **๋ณ์ ๊ฐ์ ํฌํจํ ์์น๋ฅผ ์ง์ ํ๊ณ ์ค์ ๊ฐ์ ๋ก๊น
ํจ์์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ์ฌ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์์ฑ**ํ๋ค.
+
+1. ์ฅ์
+
+* ๊ฐ๋
์ฑ ํฅ์: ๋ก๊ทธ ๋ฉ์์ง ๋ด์ ๋ณ์ ๊ฐ์ ์ง์ ๊ฒฐํฉํ๋ ๋์ ๋ณ์ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ฏ๋ก ๋ก๊ทธ ๋ฉ์์ง๊ฐ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ๋ช
ํํด์ง๋ค.
+* ๋์ ๋ก๊น
: ๋ก๊ทธ ๋ฉ์์ง์ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๋ณ์ ๊ฐ์ ํฌํจํ ์ ์๋ค. ์ด๋ฅผ ํตํด **ํน์ ์ด๋ฒคํธ์ ์ํฉ์ ๋ง๋ ๋ณ์ ๊ฐ์ ๋ก๊ทธ๋ก ๋จ๊ธธ ์ ์๋ค.**
+* ๋ณด์ ๊ฐํ: ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ก๊ทธ๋ก ๋จ๊ธธ ๋, ๊ฐ์ ์ง์ ๋
ธ์ถํ๋ ๋์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ฉด ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋ก๊ทธ ํ์ผ์ ๋จ์ ๊ฐ๋ฅ์ฑ์ ์ค์ผ ์ ์๋ค.
+
+```java
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LoggingExample {
+ private static final Logger logger = LoggerFactory.getLogger(LoggingExample.class);
+
+ public static void main(String[] args) {
+ String username = "john_doe";
+ int userId = 123;
+
+ // ํ๋ผ๋ฏธํฐํ ๋ก๊น
+ logger.info("User {} with ID {} logged in", username, userId);
+ }
+}
+```
+
+#### ๐๋ก๊ทธ์ ์ ์ํ ๊ธฐ๋ก 2 : ๋น๋๊ธฐ ์ดํ๋
+
+> ์ดํ๋๋ ๋ก๊น
์์คํ
์์ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์ด๋์ ๊ธฐ๋กํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ญํ ์ ํ๋ ์์๋ก ๋ก๊ทธ ๋ฉ์์ง๋ ์ดํ๋๋ฅผ ํตํด ํน์ ํ ์ถ๋ ฅ ๋์์ ๊ธฐ๋ก๋๊ฒ ๋๋ค. ๋ณดํต ์ดํ๋๋ ๋ก๊ทธ๋ฅผ ์ฝ์์ ์ถ๋ ฅํ๊ฑฐ๋ ํ์ผ์ ๊ธฐ๋กํ๋ ๋ฑ์ ์ญํ ์ ์ํํ๋ค.
+
+๋ก๊น
์์คํ
์์ ์ดํ๋๋ ๋ก๊ทธ ์ถ๋ ฅ์ ๋์๊ณผ ํ์์ ์ง์ ํ๋ ์ญํ ์ ํ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ๋ ๋ก๊ทธ ์ดํ๋๋ print ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํธ์ถ์์ ์ค๋ ๋์์ ์คํ
+
+**๋น๋๊ธฐ ์ดํ๋**
+
+> ํ์ฌ ์คํ ์ค์ธ ์ดํ๋๋ ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋๋ฅผ ๋ธ๋กํ์ง ์๊ณ ๋ฉ์ธ์ง๋ฅผ ๊ธฐ๋กํ๋ค.
+
+**๋น๋๊ธฐ ์ดํ๋์ ์๋์๋ฆฌ**
+
+1. ๋ก๊ทธ ๋ฉ์์ง๋ ๋ฉ์ธ ์ค๋ ๋์์ ๋น๋๊ธฐ ์ดํ๋์๊ฒ ์ ๋ฌ
+2. `๋น๋๊ธฐ ์ดํ๋`๋ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ๋ก๊ทธ ํ(๋๋ ๋ฒํผ)์ ์ ์ฅํ๋ค. ์ด๋ ํ๋ ๋ณ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ๊ด๋ฆฌ๋๋ค.
+3. `๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋`๋ ๋ก๊ทธ ํ์ ์ ์ฅ๋ ๋ฉ์์ง๋ฅผ ์ค์ ์ถ๋ ฅ ๋์(์ฝ์, ํ์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ)์ผ๋ก ์ ๋ฌํ๋ฉฐ, ์ด ์์
์ ๋ฉ์ธ ์ค๋ ๋์ ์์
๊ณผ ๋ณ๊ฐ๋ก ์ฒ๋ฆฌ๋๋ค.
+4. ์ด๋ฅผ ํตํด ๋ฉ์ธ ์ค๋ ๋๋ ๋ก๊ทธ ์ถ๋ ฅ ์์
์ ๋ํ ์ง์ฐ์ ๊ฒช์ง ์๊ณ ๋ค๋ฅธ ์์
์ ๊ณ์ ์ํํ ์ ์๋ค.
+
+**์ฅ์ **
+
+1. ๋ก๊ทธ ์ถ๋ ฅ ์์
์ **์ง์ฐ์ด ๋ฐ์ํด๋ ๋ฉ์ธ ์ค๋ ๋์ ์ฑ๋ฅ์ ์ํฅ์ ๋ ์ค๋ค.**
+2. ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ๋ก๊ทธ ์ถ๋ ฅ ์์
์ ๊ด๋ฆฌํ๋ฏ๋ก, ๋ก๊น
์์
์ผ๋ก ์ธํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฉ์ถค ํ์์ ๋ฐฉ์งํ ์ ์๋ค.
+3. ๋ก๊ทธ ์ถ๋ ฅ ์์
์ด ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
+
+**์ผ๊ด ์ดํ๋**
+
+> ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๊ธฐ ์์ ์ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๊ดํ๋ค. ์ฐ๊ธฐ ์ฒ๋ฆฌ๋ ์ญ์ ์ฆ๊ฐํ๋ค.
+
+1. ์ด์์ฒด์ ์ ํ์ด์ง ์บ์ ์ญ์ ๋ฒํผ์ฒ๋ผ ๋์ํด์ ๋ก๊ทธ ์ฒ๋ฆฌ๋์ ํฅ์ํ๋๋ฐ ๋์์ด ๋๋ค.
+2. ๋น๋๊ธฐ์ ์ผ๊ด์ฐ๊ธฐ๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ง๋ง ์ ํ๋ฆฌ์ผ์ด์
์ ํฌ๋์๊ฐ ๋ฐ์ํ๋ช ๋ก๊ทธ ๋ฉ์ธ์ง๊ฐ ๊ธฐ๋ก๋์ง ์๋ ์ผ๋ ์๊ธด๋ค.
+
+### 4. ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ๋ก๊ทธ์ ๊ธฐ๋กํ์ง ๋ง์
+
+> ๋น์ฐํ ์๊ธฐ๊ฐ์ง๋ง ํํ ์ค์ ํ๋ ๋ถ๋ถ์ผ๋ก URL์ด๋ HTTP ์๋ต์ ์๋ฌด ์๊ฐ ์์ด ๋ก๊ทธ์ ๊ธฐ๋กํ๋ฉด ์์ ์ฅ์น๊ฐ ์๋ ๋ก๊ทธ ์ซ์ง๊ธฐ๋ ์์นซ ๊ฐ์ธ์ ๋ณด ๋
ธ์ถ ๋ ์ ์๋ค.
diff --git "a/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 1\354\236\245_.md" "b/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 1\354\236\245_.md"
new file mode 100644
index 0000000..a85c54d
--- /dev/null
+++ "b/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 1\354\236\245_.md"
@@ -0,0 +1,137 @@
+---
+description: 1์ฅ์ ์ฝ๊ณ ์ ๋ฆฌ
+---
+
+# ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 1์ฅ
+
+## ์ฝ๊ฒ ๋ ๊ณ๊ธฐ
+
+> ํธ์ํฐ๋ฅผ ์์ํ๋ค. sns๋ ์ ์ํ๋๋ฐ ํธ๋ ๋๋ฅผ ์ฝ๊ณ ์ข์ ๊ฐ๋ฐ์๋ถ๋ค์ด ํธ์ํฐ์์ ํ๋์ ๋ง์ด ํ๊ธฐ์ ๊ฐ๋ฐ์ฉ์ผ๋ก 1๊ฐ์ ๊ณ์ ์ ๋ง๋ค์๋ค. ๊ฑฐ๊ธฐ์ ์ถ์ฒํ๋ ์ฑ
๋ค ์ค์ **์๋์ด ๊ฐ๋ฐ์์ ์์๋ฆฌ**๋ ์ค๋ฌด์ ๋ํด์ ์ ์ ์๋ค๊ณ ํด์ ๊ต๋ณด๋ฌธ๊ณ ์ ๊ฐ์ ๊ตฌ๋งคํ๋ค. ์์ง 2์ฅ๊น์ง ๋ฐ์ ๋ชป ์ฝ์๋๋ฐ ์ฌ๋ฏธ์๊ณ ๋ชจ๋ฅด๋ ๋ด์ฉ๋ ์๊ฒ ๋์ด ์์ง ์๊ณ ์์ฃผ ๋ณด๊ธฐ ์ํด ์ ์ด๋ณด๊ณ ์ ์์ฑํ๊ฒ ๋์๋ค.
+
+> ํน์ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์ญ์ ํ๊ฒ ์ต๋๋ค!
+
+![](https://velog.velcdn.com/images/prettylee620/post/9079b4ef-9a79-4676-9b3e-da4a57f0c3d2/image.png)
+
+## \[1์ฅ] ์ฌ์ ์ ์์ํ๋ฉฐ, ๊ฐ๋ฐ์๋ก์ ์ฒซ ์ถ๋ฐ ์์ผ๋ก ์ด๋ค ๊ธธ์ด ํผ์ณ์ง๊น?
+
+### ๐ ๋ชฉํ๋ฅผ ์ธ์ฐ์
+
+#### 1. ๊ธฐ์ ์ง์
+
+* ์ปดํจํฐ ๊ณผํ์ ๊ธฐ์ด ์ง์์ ๊ฐ์ถ์
+
+> ๐ **ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ(IDE), ๋น๋ ์์คํ
, ๋๋ฒ๊ฑฐ, ํ
์คํธ ํ๋ ์์ํฌ ๋ฑ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์์ฌ ํ๋ฉฐ, ์ง์์ ํตํฉ, ์งํ ๋ฐ ๋ชจ๋ํฐ๋ง, ์ค์ , ํจํค์ง ์์คํ
๋ฑ๋ ๋ฅ์ํ ๋ค๋ฃฐ ์ ์์ด์ผ ํ๋ค.**
+
+* ํ
์คํธ ์ฝ๋๋ ์ฌ์ ์ ๋ง๋ค์ด ๊ฐ์ ํด์ผ ํ๋ฉฐ, ์ํคํ
์ฒ ์ฐจ์์์ ๊ฒฐ์ ์ ๋ด๋ฆด ๋๋ ์ด์์ธก๋ฉด๋ ๊ณ ๋ ค\
+
+
+#### 2. ์คํ๋ ฅ
+
+* ์ฝ๋๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ์ผ๋ก์จ ๊ฐ์น๋ฅผ ๋ง๋ค์ด๋ด๋ฉฐ ์
๋ฌด์ ๋น์ฆ๋์ค ๊ฐ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๋ ์ดํด
+* ์ฝ๋ ์์ฑ + ํ
์คํธ, ์ฝ๋ ๋ฆฌ๋ทฐ + ๊ธด๊ธ ๋์ ์
๋ฌด ๊ต๋ ์งํ + ์ด์ ์ด์ ๋๋ฒ๊น
+
+> ๐ **์ฃผ๋์ ์ด๋ฉด์ ๋๊ตฐ๊ฐ์๊ฒ๋ ์์งํ ๋งํ ์ฌ๋์ด ๋ผ์ผ ํ๋ค.**
+
+#### 3. ์์ฌ์ํต
+
+* ๋ฌธ์๋ ๋ฌผ๋ก ์ด๊ฑฐ๋ ๊ตฌ๋๋ก๋ ๋ช
ํํ๊ฒ ์ํต
+* ํผ๋๋ฐฑ์ ํจ๊ณผ์ ์ผ๋ก ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์ ๊ทน์ ์ผ๋ก ๋์์ ์์ฒญํ๊ณ ๋ชจํธํ ์ํฉ์์๋ ๋ช
ํํ ์ ๋ณด๋ฅผ ์๊ตฌ ํ ์ ์์ด์ผ ํ๋ค.
+
+#### 4. ๋ฆฌ๋์ฝ
+
+* ๋ฒ์๊ฐ ์ ์ ์๋ ์์
์ ๋
๋ฆฝ์ ์ผ๋ก ์ํํ ์ ์์ด์ผ ํ๋ฉฐ, ์ค์๋ก๋ถํฐ ๋น ๋ฅด๊ฒ ๋ฐฐ์ธ ์ ์์ด์ผ ํ๋ค.
+* ๋ณํ์ ๋ชจํธ์ฑ์ ์ ์ฒ๋ฆฌํ๋ฉฐ ํ๋ก์ ํธ์ ๋ถ๊ธฐ๋ณ ๊ณํ ์๋ฆฝ์ ์ ๊ทน์ ์ํด์ผ ํ๋ค.\
+
+
+### ๐ ์ด๋ณด์
+
+#### 1. ์จ๋ณด๋ฉ ํ์
+
+> ๐ ํ์ฌ์ ํ ๊ทธ๋ฆฌ๊ณ ์
๋ฌด ๋ฐฉ์์ ์ต์ํด์ ธ์ผ ํ๋ฉฐ ์จ๋ณด๋ฉ ํ์๋ ์ฐธ์ํด์ผ ํ๋ค.
+
+* ํ์ฌ๊ฐ OT๊ฐ ์๋ค๋ฉด, ์ง์ ํ์ฅ์๊ฒ ์กฐ์ง๋(๋ด๋น ์๋ฌด, ์ธ๋ ฅ ๊ตฌ์ฑ, ๋ณด๊ณ ์ฒด๊ณ ๋ฑ), ํ ๋ถ์ ์๋ด, ํ์
๊ด๊ณ ๋ฑ์ ์ค๋ช
ํด๋ฌ๋ผ๊ณ ์์ฒญ ํ ๋ฉ๋ชจํด๋์.
+* ๊ฐ๋ฐํ๊ฒฝ๊ณผ ์์คํ
์ ๊ทผ ๊ถํ์ ์
์
ํ๊ณ ๋ณดํธ์ ์ธ ํ์ ์ ์ฐจ๋ค๊ณผ ํ์ ์ผ์ ํ์
+* ๋ฌธ์๋ ์ฝ๊ณ ํ์๋ค๊ณผ ์ํต๋ ํด์ผํ๋ฉฐ, ๋ฌธ์ ์ค๋ฅ๋ฅผ ์์ ํ๋ฉฐ ํ์ ๊ธฐ์ฌ ํด์ผํ๋ค.
+
+#### 2. ์
์
๊ณผ์ ๋ฌธ์๋ก ๋จ๊ฒจ๋์
+
+* ์ถ๊ฐ์ ์ธ ์จ๋ณด๋ฉ ์ ์ฐจ(์์คํ
์ ๊ทผ ๊ถํ ํ๋, ๊ฐ๋ฐ ํ๊ฒฝ์ ์
์
, ์ฝ๋์ ์ฒดํฌ์์ ๋ฐ ๋น๋)๋ฑ์ ๊ฐ์ถฐ์ง์ง ์์ ํ์ฌ๋ผ๋ฉด, ๋ด๊ฐ ์ง์ ๋ง๋ค์ด๋ณด์.
+
+#### 3. ํ ์กฐ์ง์ ์
๋ฌด ์งํ ์ ์ฐจ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ดํดํ๋ ๊ฒ์ด๋ค.
+
+* ์์ ๊ท๋ชจ์ ์์
๋ถํฐ ํด๋ณด์
+* ์ฃผ์ ์์ ๊ฐ์ ์์ํ ์์
๋ ์ข๋ค.
+
+#### 4. ์ฝ๋ ํธ์ง๊ธฐ๋ IDE๋ฅผ ์
์
ํ์.
+
+* IDE๋ ํ์ด ์ฐ๋ ๊ฒ์ ์ฌ์ฉํ๋ฉฐ, ์ต์ํ์ง ์๋ค๋ฉด ์จ๋ผ์ธ ํํ ๋ฆฌ์ผ์ ์ฐพ์๋ณด์.
+* ํ์ํ๋ค๋ฉด ํ์์ ์ด๋ค ์ฝ๋ฉ ๊ท์น์ ์ธ์ ๋์ง ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ์ ์ฉํ๋ฉด ๋๋์ง ๋ฌผ์ด๋ณด๋ ํธ์ด ์ข๋ค.
+
+#### 5. ํ์ฅ์ด ์คํ ๋์
๋ฏธํ
, ์คํ๋ฆฐํธ ๊ณํ, ํ๊ณ , ์ ์ฌ ํ์ ๋ฑ ํ์ด๋ ํ์ฌ ํ์์ ์ถ๊ฐํด๋๋์ง ํ์ธํ์
+
+* ์ผ๋์ผ ํ์ ์ ๋๊ฐ ์๋ค๋ฉด ํ์ฅ์๊ฒ ์ผ๋์ผ ํ์ ์ผ์ ์ก์๋ฌ๋ผ๊ณ ํ์.
+
+### ๐ ์งํ ๋
ธ๋์ ์ฑ์ฅ
+
+#### 1. ๋ชจ๋ฅด๋ ์ ์ด ์๋ค๋ฉด ์ง๋ฌธํ๊ณ , ์์
์ ๋ํด ์์ฃผ ๋ฆฌ๋ทฐํด์ค ๊ฒ์ ํ์๊ฒ ์์ฒญํ์.
+
+* ๊ธฐ์ด ์์
์ ์๋ฃํ๋ค๋ฉด ๊ธฐ์กด์ ์ฝ๋๋ฒ ์ด์ค์์ ์์
ํ๋ค.
+* ๋ชจ๋ฅด๋ ์ ์ด ์๋ค๋ฉด ์ง๋ฌธํ๊ณ , ์์
์ ๋ํด ์์ฃผ ๋ฆฌ๋ทฐํด์ค ๊ฒ์ ํ์๊ฒ ์์ฒญํ์.
+
+#### 2. ํ์ต : ์ฝ๋๋ฅผ ๋น๋, ํ
์คํธ, ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํ๋ณด์
+
+* ํ ๋ฆฌํ์คํธ, ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์ฝ์ด๋ณด์.
+* ๊พธ์คํ ํ์ต ํ์
+
+#### 3. ํ์ฅ์ ์ฃผ๋ก ์ง์ฒ์ฌํญ์ ํ์
ํ๊ธธ ์ํ๋ฏ๋ก ์ด๋ค ๋ฐฉ์์ผ๋ก ํ ์ํฉ์ ๊ณต์ ํ ์ง ๋ฌผ์ด๋ณด์
+
+
+
+#### 4. ์คํ๋ฆฐํธ ๊ณํ ํ์ ์์ํ๋ ์ฒซ ๋ฒ์งธ ๊ณํ ํ์ ๋ฑ์ ์ฐธ์ฌ ์, ํ์์์ ๋ก๋๋งต์ ๋ํ ๊ฐ์๋ ๊ฐ๋ฐ ๊ณํ ์ ์ฐจ์ ๋ํด ๋ฌผ์ด๋ณด์
+
+
+
+### ๐ ์ ๋ขฐํ ์ ์๋ ๊ธฐ์ฌ์
+
+> ๋ ํฐ ๊ท๋ชจ๋ ํฐ ์์
์ด๋ ๊ธฐ๋ฅ ๊ตฌํ ์ ์ฐธ์ฌํ๊ฒ ๋๋ฉด ์ ๋ขฐํ ์ ์๋ ๊ธฐ์ฌ์
+
+#### 1. ์์ฝ๊ฒ ์ด์ํ ์ ์๋ ํ๋ก๋์
์์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฒ, ์์กด์ฑ์ ์ ์ ํ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ, ๊น๋ํ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์
+
+#### 2. ๋ค๋ฅธ ํ์์ ๋๊ณ ๋์๋ฐ์ผ๋ฉฐ ํผ๋๋ฐฑ์ ํ๋ฉฐ ๋ฐ์ผ๋ฉฐ, ํท๊ฐ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ํญ์ ์ง๋ฌธ์ ํ์
+
+#### 3. ํ ๊ณํ์ ์ฐธ์ฌํ๊ณ ํ์ฅ๊ณผ ํ์
ํด OKR(๋ชฉํ์ ํต์ฌ ๊ฒฐ๊ณผ)๋ฅผ ์ค์ ํ์
+
+
+
+### ๐ ์ด์์ ๋ฐ๋ค
+
+> ์ฐธ์ฌํ๋ ์์
์ ๊ท๋ชจ๊ฐ ์ ์ ์ปค์ง ์๋ก ์ฝ๋๊ฐ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ๋๋ ๊ณผ์ ์ ๋ํด ๋ ๋ง์ด ์๊ฒ ๋ ๊ฒ์ด๋ค.
+
+#### 1. ์ฝ๋ ์ ๋ฌ ๊ณผ์ ์์๋ ํ
์คํธ, ๋น๋, ๋ฆด๋ฆฌ์ค, ๋ฐฐํฌ, ๋กค์์ ๋ฑ ๋ง์ ์ผ์ด ์ผ์ด๋๋ค. ์คํฌ ํ์
+
+#### 2. ๋ณ๊ฒฝ์ฌํญ ๋กค์์ ํ์๋ ํ์ด ๋ง๋ ์ํํธ์จ์ด ์ด์ํด์ผ ํ๋ค.
+
+* ๊ฐ์ข
์งํ, ๋ก๊ทธ, ์ถ์ ๋๊ตฌ ๋ฑ์ ์ด์ฉํด ์คํ ์ค์ธ ์ํํธ์จ์ด๋ฅผ ๋๋ฒ๊น
ํ๊ฒ ๋ ๊ฒ์ด๋ค.
+* ์ด๋ ์์ ์๋ ๊ธด๊ธ๋์ ์จ์ฝ ๋์ ์
๋ฌด์๋ ํฉ๋ฅํ๊ฒ ๋ ๊ฒ์ด๋ค.
+* ์ํํธ์จ์ด ๋ณดํธ ๋ฐฉ๋ฒ๋ ๋ฐฐ์ธ ๊ฒ์ด๋ค.\
+
+
+### ๐ ๋ฅ๋ ฅ์์ ๋
+
+> ์ด์ ํ์๋ ํ์ ์ฐ๋ฆฌ๊ฐ ์๊ท๋ชจ ํ๋ก์ ํธ ์ ๋๋ ์ค์ค๋ก ์ฃผ๋ํ ์ ์๋ ์ญ๋์ ๊ฐ์ท๋ค๊ณ ์๊ฐํ ๊ฒ์ด๋ค.
+
+#### 1. ๊ธฐ์ ์ค๊ณ ๋ฌธ์๋ฅผ ์์ฑํ๊ณ ํ๋ก์ ํธ ๊ณํ ์๋ฆฝ๋ ๊ฑฐ๋ค์ด์ผ ํ๋ค.
+
+* ์ฒซ ์ค๊ณ์ ์์ฃผํ์ง ๋ง๊ณ ํธ๋ ์ด๋์คํ๋ฅผ ์๊ฐํ๊ณ ์๊ฐ์ด ์ง๋๋ ๋ฐ์ ์ ์ง์ํ ์ ์๋ ์์คํ
์ ์ํ ๊ณํ์ ์ธ์ฐ์
+
+#### 2. ๋ชจ๋ ๊ฒ์ ์๋ก ์ฌ์์ฑ ์๋๋ ํ์ง ๋ง๋ ๊ฒ์ ์ถ์ฒํ๋ค.
+
+* ์ํคํ
์ฒ, ๋น๋ ๋ฐ ๋ฐฐํฌ ์์คํ
, ํ
์คํธ ํ๊ฒฝ์ ๊ฒฐํจ ๋ฑ์ด ๋์ ๋๊ฒ ๋๋ฉฐ, ๊ทธ๋ ๊ฒ ์ผ์์ ์ธ ์
๋ฌด ๊ทธ๋ฆฌ๊ณ ์ ์ง๋ณด์์ ๋ฆฌํฉํฐ๋ง ์์
์ฌ์ด์ ๊ท ํ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด๋ค.
+
+#### 3. ํ์ฅ์๊ฒ ์๊ฒฌ ๊ณต์
+
+#### 4. ์ฅ๊ธฐ์ ์ธ ๋ชฉํ ์ค์ ํ ์ฑ๊ณผ ๋ฆฌ๋ทฐํ๋ฉฐ, ๋๋ฃ๋ค์๊ฒ ํผ๋๋ฐฑ ๋ฐ์.
+
+### ๐ ์ ๋ฆฌํ๋ฉฐ
+
+> ์ด ์ฑ
... ์ทจ์
ํ๊ณ ๋ณด๋ ์ ์
์ ์ด๋ณด์, ์งํ ๋
ธ๋์ ์ฑ์ฅ ์ด๊ฑฐ๋ ๋น์ทํ๋ค๋ ๊ฒ!!! + ์ค๊ฐ ์ค๊ฐ ์ํฉ ๊ณต์ ๋ ๊ผญ ํ์ํ๋ค!!!
diff --git "a/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 2\354\236\245_.md" "b/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 2\354\236\245_.md"
new file mode 100644
index 0000000..5251e31
--- /dev/null
+++ "b/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 2\354\236\245_.md"
@@ -0,0 +1,284 @@
+---
+description: ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 2์ฅ
+---
+
+# ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 2์ฅ
+
+![](https://velog.velcdn.com/images/prettylee620/post/cf77a62d-212d-4c66-a49c-685fa3c59a98/image.png)
+
+> ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋์ ์ฝ๊ณ ์ ๋ฆฌํ๋ ๊ธ์ด๋ฉฐ, ํน์ ๋ฌธ์ ๊ฐ ๋๋ฉด ์ญ์ ํ๊ฒ ์ต๋๋ค.
+
+## ์ญ๋์ ๋์ด๋ ์์์ ๋
ธ๋ ฅ - ๊ฒฝ์์๊ฐ ๊ฐ์ถ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํด ์ค์ค๋ก ํด์ผ ํ ์ผ
+
+### 1. ๋ค์ด๊ฐ๋ฉฐ
+
+> ํ์ต์ ์ํ ๊ฐ๋ฅด์นจ์ด๋ผ๋ ์ฑ
์์ `๋ฅ์ํจ`์ 4๊ฐ์ง ๋จ๊ณ๋ก ๋๋์ด ์๋ฏธ ํ๋ค.
+
+1. ๋ฌด์์์ ๋ฅ๋ ฅ ๋ถ์กฑ
+2. ์์์ ๋ฅ๋ ฅ ๋ถ์กฑ
+3. ์์์ ๋ฅ์
+4. ๋ฌด์์์ ๋ฅ์
+
+>
+
+๋ชจ๋ ์์ง๋์ด๋ ์์์ ์ด๋ ๋ฌด์์์ ์ด๋ ๋ฅ๋ ฅ ๋ถ์กฑ ๋จ๊ณ์์ ์์ํ๋ฉฐ, ๋ชฉํ๋ ์ต๋ํ ๋นจ๋ฆฌ ์์์ ๋ฅ์ ๋จ๊ณ๋ก ์ ์ด๋๋ ๊ฒ์ด ์ข๋ค. ๋ํ ์ด ์ฅ์์ ์๊ธฐ์ฃผ๋ ํ์ต์ด๋ผ๋ ์ต๊ด ๋ฐฉ๋ฒ๊ณผ ๊ท ํ ์ ์ง, ๊ฐ๋ฉด ์ฆํ๊ตฐ, ๋๋ ํฌ๋ฃจ๊ฑฐ ํจ๊ณผ์ ๋ํด์๋ ๋ค๋ฃฌ๋ค. ์ค์ค๋ก์ ๋ํ ๋ถ์ ์ด๋ ๊ณผ์ ์ ๋น ์ง์ง ์๋๋ก ์ฃผ์ํ๋ฉฐ ์๊ธฐ์ฃผ๋ ํ์ต์ ๊ณ์ํ๊ณ ํจ์จ์ ์ธ ์ง๋ฌธ์ ํ๋ค ๋ณด๋ฉด ์์์ ๋ฅ์ํจ์ ๋น ๋ฅด๊ฒ ๊ฐ์ถ ์ ์์ ๊ฒ์ด๋ค.
+
+### 2. ์ค์ ์ ์์ ์ตํ์ผ ํ ์๊ธฐ์ฃผ๋ ํ์ต ๋ฐฉ์
+
+* ํ์ต์ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋์์ ์๋ํด์๋ ์ ๋๋ค.
+* ์ง์์ ์ธ ์ฑ์ฅ๋ ์ค์ํ์ง๋ง ๊นจ์ด ์๋ ๋ด๋ด ์ผ๋ง ํ๋ ๊ฒ์ ๊ฑด๊ฐ์ ํด์น๋ฏ๋ก ๊ฐ์ธ ์๊ฐ์ ๋ฐ๋์ ํ๋ณดํ๊ธฐ ๋ฐ๋๋ค.
+
+### 3. ๋ณธ๊ฒฉ์ ์ธ ํ์ต์ ์ํ ๋ชธํ๊ธฐ
+
+> ์ด ์ด๋ฐ ๊ณผ์ ์ ์ง๋ฃจํ ์๋ ์๊ณ ๋ค๋ฅธ ์ฌ๋์ ๋ฐ์๋ฐ ๋ง์น ์์ ๋ง ํ๊ฐํ ๊ฒ ๊ฐ์ ๋๋๋ ๋ค ๊ฒ์ด๋ค. ํ์ง๋ง ๊ฑฑ์ ๋ง๋ผ. ์ ์ํ ์๊ฐ์ด ํ์ํ๋ค๋ ์ฌ์ค์ ๋ชจ๋ ์ฌ๋์ด ์๊ณ ์์ ๊ฒ์ด๋ค.
+
+* ์
์ฌ ํ ์ฒ์ ๋ช ๋ฌ๊ฐ์ ์ผ๋จ ์ํฉ์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ํ์
ํ๋ ๋ฐ ์ง์คํ์.
+* ๊ทธ๋ฌ๋ฉด ์ค๊ณ ํ์๋ ์จ์ฝ ๊ต๋ ์
๋ฌด, ์ด์ ์ด์, ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฑ์ ์ฐธ์ฌํ๋๋ฐ ๋์์ด ๋๋ค.
+
+### 4. ์ง์ ๋ถ๋ชํ๋ณด๋ฉด ๊นจ๋ซ์
+
+> ์ฝ๋๋ฅผ ์ฒ์ ๋ฐฐํฌํ ๋ ์ด๋๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์์ ๋๋ ค์ธ ์ ์์ง๋ง ํ์ฅ๋ค๋ ๋
น๋ก์น ์์์ ๊ฒฐ์ฝ ์ฌ๊ฐํ ํผํด๋ฅผ ์
ํ ๋งํ ์ํฉ์ ๋ง๋ค์ง ์๋๋ค. (๋๋ง ๋์์ด ์๋ ๊ฒฝ์ฐ ์ ๊ท ์
์ฌ์๊ฐ ์ํ ๋ถ๋ด ๋์ ์์
์ ํฌ์
๋ ๋๋ ์๋ค.)
+
+* ๋ฌธ์๋ฅผ ์ฝ์ด ๋ฐฐ์ธ ์ ์๋ ๊ฒ๋ณด๋ค๋ ์ค์ ์ ํตํด ๋ฐฐ์ธ ์ ์๋ ๊ฒ์ด ํจ์ฌ ๋ง๋ค.
+* ๊ทธ๋ฌ๋ฏ๋ก ์ฝ๋ฉ์ ํ๊ณ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐฐํฌํด์ผ ํ๋ค.
+* ๋ง์ฝ ์ค์ํ๋๋ผ๋ ์ค์ค๋ก๋ฅผ ๋๋ฌด ์ฑ
๋งํ์ง ๋ง์. ์ค์๋ก๋ถํฐ ๋ฐฐ์ด ๊ฒ์ด ์๋ค๋ฉด ๊ธฐ๋กํด๋๊ณ ๊ณ์ ์ ์งํด ๋๊ฐ๋ฉด ๋๋ค.
+
+### 5. ์ฝ๋ ๋์์ ์ดํดํ๊ธฐ ์ํด ๋ค์ํ ์คํ์ ํด๋ณด์
+
+> ์ด๋ค ๋ฉ์๋๊ฐ ํธ์ถ์ด ๋ ๊ฒ์ ์๊ฒ ๋๋ฐ ๋๋์ฒด ์ด๋ค ๊ฒฝ๋ก๋ก ๊ทธ ๋ฉ์๋๊ฐ ํธ์ถ๋๋์ง ์์๋ด์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ด ๋๋ `์์ธ`๋ฅผ ๋์ง๊ฑฐ๋ `์คํ ํธ๋ ์ด์ค`๋ฅผ ์ถ๋ ฅํด๋ณด๊ฑฐ๋ ์๋๋ฉด `๋๋ฒ๊ฑฐ`๋ฅผ ๋ถ์ฌ ํธ์ถ ๊ฒฝ๋ก๋ฅผ ์ดํด๋ณด๋ ๋ฑ์ ์๋
+
+* ์ฌ๋ฌ ๊ฐ์ง ์๋๋ฅผ ํด๋ณด๋ฉฐ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์์๋์.
+
+#### ๐ ์ฌ๊ธฐ์ ์ ๊น! ์คํ ํธ๋ ์ด์ค๋?
+
+> ์ผ๋จ ์ถ์ฒ https://jaehoney.tistory.com/51 https://okky.kr/articles/338405
+
+**๊ฐ๋
**
+
+* ํ๋ก๊ทธ๋จ์ด ์์๋ ์์ ๋ถํฐ ํ์ฌ ์์น๊น์ง์ ๋ฉ์๋ ํธ์ถ ๋ชฉ๋ก
+* ์์ธ๊ฐ ์ด๋์ ๋ฐ์ํ๋์ง ์๋ ค์ฃผ๊ธฐ ์ํด JVM์ ์์ฑ
+
+**ํ์ ์ด์ **
+
+* ์คํ ํธ๋ ์ด์ค๋ฅผ ์ฝ๋ ๋ฅ๋ ฅ์ ์ ํ์ด ์๋ ํ์
+* ๋ฌดํฑ๋๊ณ ์ค๋ฅ๋ด์ฉ์ ๋ณต๋ถํ๊ณ ํด๊ฒฐ์ ์ํ ์ฝ๋๋ ๋ณต๋ถํ๋ค๋ฉด ์ง๋ฉดํ ๋ฌธ์ ๋ ํด๊ฒฐํ ์ ์์ง๋ง ๋ฐ์ ์์ด ๋จธ๋ฌผ๋ฌ ์๊ฒ ๋จ
+* ๊ฐ์ฌ๋๋ ํญ์ ๊ฐ์กฐํ๋ ๋ด์ฉ
+
+**๊ทธ๋ ๋ค๋ฉด ์ฝ๋ ๋ฒ?**
+
+```JAVA
+public class StackTraceTest
+{
+ public static void main(String[] args)
+ {
+ one();
+ }
+
+ public static void one()
+ {
+ two();
+ }
+
+ public static void two()
+ {
+ three();
+ }
+
+ public static void three()
+ {
+ Integer.parseInt("abcde");
+ }
+}
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/0bc51219-6345-49e0-899d-cfc22c9ee627/image.png)
+
+1. ์คํํธ๋ ์ด์ค๋ ์๋ฌ๊ฐ ๋ฐ์๋ ์์ ๋ถํฐ ํ๋ก๊ทธ๋จ์ด ์์๋ ์์ ๊น์ง ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด์ ์ถ๋ ฅ๋๊ธฐ ๋๋ฌธ์ **๋จผ์ ์คํ๋ ๋ฉ์๋๊ฐ ๊ฐ์ฅ ์๋**
+2. ๋๋ ๋ณด๋ ค๊ณ ๋
ธ๋ ฅํ์ง๋ง ๊ฒ๋จน๊ธฐ ๋ง๋ จ์ด๋ค. ๋๋ถ๋ถ ์ฒ์ ์์ํ๋ ๋ถ๋ค์ด ๊ทธ๋ ๋๋ผ
+3. ํ์ง๋ง ์๋ฌ์ ์ง์ ํ ์์ธ์ ๊ฐ์ฅ ์๋์ชฝ(์ด๊ธฐ)์ ์๋ `Caused by:`๋ก ์์๋๋ ์ค๋ถํฐ ์๋๋ก ์ธ์ค์ด๋ฉด ์ถฉ๋ถ
+
+```java
+Caused by: java.lang.NullPointerException
+ at com.mycompany.service.impl.PortalManagerImpl.deleteMenuItem(PortalManagerImpl.java:603)
+ at com.mycompany.service.impl.PortalManagerImpl.deletePortal(PortalManagerImpl.java:358)
+```
+
+4. ์์ ๋ด์ฉ์ com.mycompany.service.impl.PortalManagerImpl' ํด๋์ค์ `deletePortal` ๋ฉ์๋ 358๋ผ์ธ์์ ๊ฐ์ ํด๋์ค์ `deleteMenuItem`๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ฐ ํด๋น ๋ฉ์๋ 603๋ฒ ์งธ ์ค์์ ๋ํฌ์ธํฐ ์์ธ๊ฐ ๋ฐ์ํ๋ค๋ผ๊ณ ํด์
+
+> **okky์ ์ง๋ฌธ** ![](https://velog.velcdn.com/images/prettylee620/post/44408d1c-8078-468d-b5c6-1a9b2be04488/image.png) **okky์ ๋ต๋ณ** `deleteMenuItem()`์ ์ฌ๊ท ํธ์ถ์ ํ๋ ๋ฉ์๋๋ผ์ ํผ๋์ด ๋์ ๊ฒ ๊ฐ์ต๋๋ค. ์คํํธ๋ ์ด์ค์ ์ธ์ฉํ์ ๋ถ๋ถ์ "603๋ฒ ์งธ ์ค์์ deleteMenuItem()์ ํธ์ถํ ๋"๊ฐ ์๋๋ผ "ํธ์ถ๋ deleteMenuItem() ๋ฉ์๋์ ๋ด๋ถ์ 603๋ฒ ์งธ ์ค"์ ๐ ์ข ๋ ์์ธํ ์ค๋ช
ํ์๋ฉด, deleteMenuItem() ๋ฉ์๋ ๋ด๋ถ์์ getMenuItems(item.getPortal().getId(), item.getId()) ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋, item์ด null์ธ ๊ฒฝ์ฐ NullArgumentException์ด ๋ฐ์ํ๊ณ ์์ธ๊ฐ ๋์ ธ์ง๋๋ค.
+
+5. `PortalManagerImpl` ํด๋์ค ์์ค
+
+```java
+if (item == null) {
+ throw new NullArgumentException("item");
+}
+
+//์ค๊ฐ ์๋ต
+List children = getMenuItems(item.getPortal().getId(), item.getId()); // 603๋ฒ์งธ ์ค
+
+for (PortalMenu child : children) {
+ deleteMenuItem(child);
+ }
+```
+
+**๊ทธ๋ ๋ค๋ฉด..? ๋ํฌ์ธํธ exception ์์ธ์?**
+
+* ๋ง์ ์์ ์ง์์๋ค์ด `children`์ด๋ `item.getId()` ๋ฑ์ ๋๊ฐ์ด ๋ค์ด๊ฐ ๊ฒ ๊ฐ๋ค๊ณ ๋ตํ๋ค๊ณ ํ๋ค. ์ด๋ก ์ ์ผ๋ก ํด๋น ๋ผ์ธ์์ ๋๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋,
+
+> 1. children
+
+2. item
+3. item.getPortal()
+4. item.getPortal().getId()
+5. item.getId()
+
+* ์ด ์ค ์ ์ด๋ ๋ ๊ฐ์ง, ์ฆ 2๋ฒ ํน์ 3๋ฒ์ผ๋ก ๊ฐ๋ฅ์ฑ์ ๋ฐ๋ก ์ขํ์ง ๋ชปํ๋ค๋ฉด ๊ทธ๊ฒ์ ๋ํฌ์ธํฐ ์์ธ์ ์๋ฏธ๋ฅผ ์ ํํ๊ฒ ํ์
ํ์ง ๋ชปํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค.
+
+> ๋ํฌ์ธํฐ ์์ธ๋ ๋จ์ํ๊ฒ ๋ณ์์ ๋๊ฐ์ด ๋ค์ด๊ฐ์ ์๊ธฐ๋ ์ค๋ฅ๊ฐ ์๋๋ค. `๋ํฌ์ธํฐ ์์ธ`๋ **๋ช
ํํ๊ฒ ๊ฐ์ฒด์ ๋๋ ํผ๋ฐ์ค์ ๋ํด ๋ฉ์๋ ํธ์ถ์ด๋ ํ๋ ์ฐธ์กฐ ๋ฑ์ ์์
์ ํ์ ๋ ๋ฐ์ํ๋ ๋ฌธ์ **๋ผ๋ ๊ฒ์ ์ดํดํ๋ค๋ฉด ์ด๋ฐ ๋ฌธ์ ๋ ๊ณง๋ฐ๋ก ์์ธ์ ์ขํ ์ ์์ด์ผ ํ๋ค.
+
+* ์ฆ, 1๋ฒ์ ๊ฒฝ์ฐ์ฒ๋ผ ๋จ์ํ ๋ณ์์ ๋๊ฐ์ ํ ๋นํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ ๋๋ก ๋ํฌ์ธํฐ ์์ธ๊ฐ ๋ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ผ 4 ๋ฒ `item.getPortal().getId()`์ด๋ 5๋ฒ `item.getId()`์ด ๋์ด๋ผ๋ฉด ์ด๋ ๋ ๋ ํผ๋ฐ์ค์ ๋ํ ํธ์ถ์ด ์๋๋ผ ๋๊ฐ์ `getMenuItems`๋ผ๋ **๋ฉ์๋์ ์ธ์๋ก ๋๊ธฐ๋ ๊ฒ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ ์ญ์ ๋ํฌ์ธํฐ ์์ธ์ ์์ธ์ด ๋ ์ ์๋ค.**
+* ๋ฌผ๋ก `getMenuItem` ๋ฉ์๋ ์์์ **ํด๋น ์ธ์์ ๋ํ ๋์ฒดํฌ ์์ด ๊ฐ์ ์ฌ์ฉํ๋ค๊ฐ ์์ธ๊ฐ ๋ ์๋ ์๊ฒ ์ง๋ง** ์ด ๊ฒฝ์ฐ์ ์ ๋๋ก ํธ๋ ์ด์ค ์์ **๊ตต์ ๊ธ์๋ก ํ์๋ 603๋ฒ ์งธ์์ ์์ธ๋ฅผ ๋ฟ๋ฆฌ์ง ์๋๋ค.**
+* ๊ทธ๋ ๋ค๋ฉด ๋จ์ ๊ฐ๋ฅ์ฑ์ 2๋ฒ 'item'์ด ๋์ด๊ฑฐ๋ 3๋ฒ 'item.getPortal()'์ด ๋์ธ ๊ฒฝ์ฐ๋ฟ์ธ๋ฐ, 'item' ๋ณ์๋ ์์์ ๋์ฒดํฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ 603๋ฒ ์งธ ์ค์์ ์ ๋๋ก ๋๊ฐ์ ๊ฐ์ง ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ต์ 3๋ฒ์ด ๋๋ ๊ฒ
+
+**์ฝ์ด๋ณด๋ฉด ์ข์ ๊ธ**
+
+[๊ฐ๋ฐ์ ์๊ธฐ๊ณผ๋ชฉ์ด ์๋๋๋ค](https://okky.kr/questions/311337)
+
+**๋
ผ์ธ Visual Studio์ Visual Studio Code**
+
+> ์คํ ํธ๋ ์ด์ค ๋ฅผ ์ฝ๋ ๋ฒ์ ์ฐพ๋ค๊ฐ ์๊ฒ ๋ ๊ฒ์ธ๋ฐ... ๋์ ์์ ํ ๋ค๋ฅด๋ค๋ ๊ฒ Visual Studio๋ IDE(ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ)์ด๋ฉฐ Visual Studio Code๋ Sublime Text ๋ฐ Atom๊ณผ ๊ฐ์ ๋ฆฌ์น ํ
์คํธ ํธ์ง๊ธฐ๋ก ๋๊ตฌ ๊ฐ์ ์ฐจ์ด์ ์ IDE์ ํ
์คํธ ํธ์ง๊ธฐ ๊ทธ ์ด์์ด๋ผ๊ณ ํ๋ค. IDE๋ ์ฝ๋ ์์ฑ, ํธ์ง, ๋๋ฒ๊น
๋ฐ ์คํ์ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก ํ
์คํธ ํธ์ง๊ธฐ์์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํธ์งํ ์๋ง ์๋ค. ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋ ์๋์ผ๋ก ์คํ๋๋๋ก ํ๋ฌ๊ทธ์ธ์ ๋ค์ด๋ก๋ํ๋ ค๋ฉด ํ
์คํธ ํธ์ง๊ธฐ์์ ๋๊ฐ์ผ ํ ์๋ ์๋ค๊ณ ํจ.. ๊น๊ฒ ๊ณต๋ถ ์ํ๊ณ ๋๋ฆฌ๊ธฐ๋ง ํด์... ๋ชฐ๋๋ค.
+
+#### ๐ ์ด๋ฐ ์คํ์ ํ ๋ ๋๋ฒ๊ฑฐ ์ญ๋ถ ํ์ฉ
+
+1. ์คํ ์ค์ธ ์ฝ๋๋ฅผ ์ ์ ์ ์ง์ํค๊ณ ์คํ ์ค์ธ ์ค๋ ๋, ์คํ ํธ๋ ์ด์ค, ๋ณ์ซ๊ฐ ๋ฑ์ ํ์ธํ ์ ์๋ค.
+2. ๋๋ฒ๊ฑฐ๋ฅผ ๋ถ์ฌ ์ด๋ฒคํธ ๋ฐ์์ํจ ํ ์ฝ๋๊ฐ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ๋จ๊ณ์ ์ผ๋ก ํ์ธ
+3. ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ ๋๋ฒ๊ฑฐ์์ ์ฝ๋ ์คํ์ ์ค์ง์ํค๋ ์ง์ ์ ์ค์ ํ๋ ๋๊ตฌ๋ก ์ด๋ฅผ ํตํด ํด๋น ์ง์ ์์ ์ฝ๋์ ์คํ ์ํ๋ฅผ ๋ถ์ํ๊ณ ๋ณ์ ๊ฐ์ ํ์ธํ ์ ์๋ค.
+
+**intellij์์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ ์ค์ ๋ฐฉ๋ฒ**
+
+> IntelliJ IDEA๋ฅผ ์ด๊ณ ๋๋ฒ๊ทธํ ํ๋ก์ ํธ๋ฅผ ๋ก๋
+
+1. ๋๋ฒ๊ทธํ๊ณ ์ถ์ ์ฝ๋ ํ์ผ์ ์ฝ๋๋ค.
+2. ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ์ค์ ํ๋ ค๋ ์ค์ ๋ง์ฐ์ค ์ปค์๋ฅผ ๊ฐ์ ธ๊ฐ๋๋ค.
+3. ํด๋น ์ค์ ์ผ์ชฝ ๋ง์ง(๋ผ์ธ ๋๋ฒ ๋ถ๋ถ)์ ํด๋ฆญํ๋ฉด ๋ธ๋ ์ดํฌ ํฌ์ธํธ๊ฐ ์ค์ ๋ฉ๋๋ค. ๋๋, ํด๋น ์ค์ ํด๋ฆญํ ํ `Ctrl + F8 (Windows/Linux)` ๋๋ `Command + F8 (Mac)`์ ๋๋ฅด๋ฉด ์ปจํ
์คํธ ๋ฉ๋ด๊ฐ ๋ํ๋ฉ๋๋ค. ์ด ๋ฉ๋ด์์ `Toggle Line Breakpoint`๋ฅผ ์ ํํ๋ฉด **๋ธ๋ ์ดํฌ ํฌ์ธํธ๊ฐ ์ค์ **๋ฉ๋๋ค.
+4. ์ค์ ํ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ `๋นจ๊ฐ ๋๊ทธ๋ผ๋ฏธ`๋ก ํ์๋ฉ๋๋ค.
+5. ๋๋ฒ๊ทธ ๋ชจ๋๋ก ์คํํ๋ ค๋ฉด ํด๋น ํด๋์ค ๋๋ ๋ฉ์๋ ๋ด์์ ๋ง์ฐ์ค ์ฐํด๋ฆญํ์ฌ "Debug" ์ต์
์ ์ ํํ๊ฑฐ๋, ์ฝ๋ ์๋ํฐ ์๋จ์ "Run" ๋๋ "Debug" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
+6. ํ๋ก๊ทธ๋จ์ด ๋ธ๋ ์ดํฌ ํฌ์ธํธ์ ๋๋ฌํ๋ฉด ์คํ์ด ์ผ์ ์ ์ง๋ฉ๋๋ค. ์ด๋ ๋๋ฒ๊ฑฐ ์ฐฝ์์ ๋ณ์ ๊ฐ์ ํ์ธํ๊ฑฐ๋ ๋จ๊ณ๋ณ๋ก ์ฝ๋๋ฅผ ์คํํด๋ณผ ์ ์์ต๋๋ค.
+
+#### ๐ ๋๋ฒ๊ฑฐ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง ๊ฐ๋์ ๋ก๊ทธ๋ print๋ฅผ ๋ฃ์ด๋๋ ๊ฒ์ด ์ฝ๋์ ๋์์ ์ดํดํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ
+
+* ๋ค๋ง, ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ ๋ณต์กํ ์ํฉ์์ print๋ฌธ์ ์ด์ฉํ ๋๋ฒ๊น
์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ ์ ์๋ค๋ ์ ์์ ์ ์
+
+#### ์ฝ์ง๋ง ์ ์ฉํ ๋ฐฉ๋ฒ
+
+* ์๋ ์ฝ๋๊ฐ ์๋๋ผ ๋ด๊ฐ ์์ ์ค์ธ ์ฝ๋๊ฐ ์คํ๋๊ณ ์๋ ์ฌ์ค์ ๋์ ๋๊ฒ ์๋ ค์ฃผ๋ ๋ฌธ์ฅ์ ํ๋ก๊ทธ๋จ์ด ์ฒ์ ์คํ๋๋ ์์ ์ ์ถ๋ ฅ
+
+### 6. ๋ฌธ์ ์ฝ๋ ์ต๊ด์ ๋ชธ์ ๋ฐฐ์ผ ํ๋ค.
+
+> ์ฝ์ ์๋ฃ๋ ๋ฌด๊ถ๋ฌด์งํ๋ค. ๋ค๋ง ์ด ์๋ฃ๋ค์ ํ ๋ฒ์ ๋ชจ๋ ์ฝ์ ์๊ฐ์ ํ์ง๋ง์.
+
+1. ๋จผ์ ํ๋ฌธ์์ ์ค๊ณ ๋ฌธ์๋ถํฐ ์์
+
+* ๊ทธ๋ ๊ฒ ๋๋ฉด, ์ฌ๋ฌ ๋ถ๋ถ์ด ์ด๋ป๊ฒ ๊ฒฐํฉ๋์ด ๋์ํ๋์ง ๋๋ต์ ์ผ๋ก ์ดํด ๊ฐ๋ฅํ๊ฒ ๋๋ค.
+* ํนํ **ํธ๋ ์ด๋ ์คํ์ ์ปจํ
์คํธ**์ ๋ํ ๋
ผ์๋ ๋์ฑ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์
+* ๊ทธ๋ฌ๋ฉด ์๋ธ์์คํ
์ ๋ํ ์ดํด๊ฐ ๋ ๊น๊ฒ ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
+
+> #### ๐ ์ ๊น!! ํธ๋ ์ด๋ ์คํ(trade-off)์ ์ปจํ
์คํธ(context)๋?
+>
+> * ํธ๋ ์ด๋ ์คํ : ๊ฐ์ฒด์ ์ด๋ ํ ๋ถ๋ถ์ ํ์ง์ ๋์ด๊ฑฐ๋ ๋ฎ์ถ๋ ๋ฐ ๋ค๋ฅธ ํ์ชฝ์ ์ํฅ์ ๋ฏธ์น๋ ์ํฉ EX. ๊ฐ๋ฐ์ ์๊ฐ UP => ์์ฑ๋ UP => ๋น์ฉ UP **์ ์ ํ ์ต์ ์ ํํ ํ์**
+> * ์ปจํ
์คํธ : ์ฝ๋๋ ๊ธฐ๋ฅ์ด ์๋ํ๋ ํ๊ฒฝ, ์ด๋ค ํน์ ์์
ํ ๋จ์ ์ํํ ํ์ํ ๊ธฐ๋ณธ์ ๋ณด, ์ค๋น์ฌํญ, ๊ทธ ๊ฒฝ๊ณ์ ์ง์นจ
+
+2. ์ฝ๋๋ ์์ค์ฒ๋ผ ์ฒ์๋ถํฐ ๋๊น์ง ์ญ ์ฝ๋ ๊ฒ์ด ์๋๋ค. **IDE**๋ฅผ ์ด์ฉํด ์ฝ๋์ ์ด๊ณณ์ ๊ณณ์ ํ์ด๋ณด์. ์ฃผ์ ๊ธฐ๋ฅ์ ๋ํด์๋ **์ฝ๋์ ํ๋ฆ๊ณผ ์ํ๋ฅผ ๋ค์ด์ด๊ทธ๋จ**์ผ๋ก ๊ทธ๋ ค๋ณด์. ์ฝ๋์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ํํค์ณ๋ณด์. ์์ธ ์ํฉ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง๋ ์ ์ดํด๋ณด์. ๊ทธ๋ฌ๋ฉด์ ํ์ ์ฝ๋ฉ ์คํ์ผ๊ณผ ์ฉ์ด๋ ๊ผผ๊ผผํ ํ์ธํ์. ๊ทธ๋์ผ ๋ด๋ถ ์์ฌ์ํต์ด ์ํ ํด์ง๋ค.
+3. ์์ผ๋ก ํด์ผ ํ ์ผ์ ํฐ์ผ(ticket)์ด๋ ์ด์(issue)๋ก ๊ด๋ฆฌํ๋ค.
+
+### 7. ๊ทธ ์ธ
+
+**1. ๋ฐํ ์์์ ์ฐพ์์ ์ฐพ์๋ณด์**
+
+* ๋ค๋ง, ์๋์ ์ธ ํ๋๋ ๊ธ๋ฌผ ๋ด์ฉ์ ๊ธฐ๋กํ๊ณ ์ต์ํ์ง ์์ ์ฉ์ด ์ฐพ์๋ณด๊ธฐ
+
+**2. ๋๋ก๋ ๋ฐ์
๊ณผ ์ปจํผ๋ฐ์ค๋ฅผ ์ฐธ์ฌํ์.**
+
+* ๋๋๋ก ์ฐธ์์ ์ข์ง๋ง ๋๋ฌด ์ฆ์ ์ฐธ์์ ๊ธ๋ฌผ์ด๋ค.
+
+**3. ์๋์ด ์์ง๋์ด์ ์ฒดํํ๊ณ ํ์
ํ์**.
+
+* ์ฒดํํ๊ธฐ(shadowing) : ๋ค๋ฅธ ์ฌ๋ ์
๋ฌด๋ฅผ ์ํํ๋ ๋์ ๊ทธ๋ฆผ์์ฒ๋ผ ๋ฐ๋ผ ๋ค๋๋ฉฐ, ์ผ์ ์ ํ์ ๊ณํ๊ณผ ํ๊ณ ์๊ฐ ๋ง๋ จํ๊ธฐ
+* ์ง ํ๋ก๊ทธ๋๋ฐ(pair programming) : ๋ ๋ช
์ ์์ง๋์ด๊ฐ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ํจ๊ป ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์๋์๊ฒ ๋ญ๊ฐ๋ฅผ ๋ฐฐ์ฐ๋๋ฐ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.
+
+**4. ๊ฐ์ธ ํ๋ก์ ํธ ํ๋์์๋ ๋ฐฐ์์ ์ป์ ์ ์๋ค.**
+
+* ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์งํํ์.
+* ๋ฐฐ์์ผ ํ ์์ฌ๋ฅผ ๊ทผ๊ฑฐ๋ก ํ๋ก์ ํธ๋ฅผ ์ ํํด์๋ ์ ๋๋ค. ํด๊ฒฐํ๊ณ ์ถ์ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค. \*\*๋ชฉํ๊ฐ ์์ด์ผ ๋ ์ค๋ ๋ชฐ๋ํ๊ณ ๋ ๋ง์ด ๋ฐฐ์ธ ์ ์๋ ๋ณธ์ง์ ์ธ ๋๊ธฐ๊ฐ ์ค์ค๋ก์๊ฒ ๋ถ์ฌ๋๋ค. \*\*
+* ๋์ฒด๋ก ํ์ฌ์๋ ์
๋ฌด ์ธ ํ๋์ ๋ํ ๊ท์ ์ด ๋์์์ผ๋ ํ์ฌ ์ ์ฑ
์ฝ๊ธฐ ํ์
+
+**5. ์ ๋๋ก ์ง๋ฌธํ๊ธฐ**
+
+* ์ง๋ฌธ์ ๋ฐฐ์์ ์์ด ๋งค์ฐ ์ค์ํ๋ค.
+* ํ ๋๋ฃ์๊ฒ ๋ฏผํ๊ฐ ๋ ๊น ์ถ์ด ๋ชจ๋ ๊ฒ์ ํผ์ ์์๋ด๋ ค๊ณ ํ๋๋ฐ, ๋นํจ์จ์ ์ด๋ค.
+* ์ง๋ฌธํ ๋๋ ๋จผ์ ์ค์ค๋ก ์ฐพ์๋ณด๊ณ ๋ช
ํํ ์ง๋ฌธํ๋ฉฐ, ์ง๋ฌธ์ ๋ํ ๋ต์ ๋ค์ ๋๊น์ง ์ ์ ํ ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๋ ์ธ ๋จ๊ณ๋ฅผ ๋ฐ์๊ฐ๊ธธ ๋ฐ๋๋ค.
+
+**6. ์ค์ค๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด์**
+
+> ์๋ฌด๋ฐ ๋จ์๋ ์ฐพ์ง ๋ชปํ๋ค๋ฉด ์คํ์ ํตํด ์ค์ค๋ก ํด๊ฒฐํด๋ณด์. _**์ด๋๋ฅผ ์ดํด๋ดค๋์ง ์ด๋ค ๋ฐฉ๋ฒ์ ์ ์๋ํ๋์ง, ๊ฒฐ๊ณผ๋ ์ด๋ ๋์ง ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ก๋ถํฐ ๋ฐฐ์ด ๊ฒ์ ๋ฌด์์ธ์ง ๋ชจ์กฐ๋ฆฌ ๊ธฐ๋กํ์.**_
+
+* ๋ฌด์์ ์ธํฐ๋ท๋ง ๋ค์ง๋ ๋ฐฉ๋ฒ์ ์ณ์ง ์๋ค. ๋ง์ผ ๊ถ๊ธํ ์ ์ด ์ฝ๋์ ๋ํ ๊ฒ์ด๋ผ๋ฉด ๋ฌธ์ ๋ฅผ ์
์ฆํ๋ `๋จ์ ํ
์คํธ`๋ก ๋ฐ๋๋ณด์.
+* ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ ์ฑํ
๊ทธ๋ฃน์ ๋ค์ ธ๋ณด์
+
+**7. ์ ํ ์๊ฐ์ ์ ํ์**
+
+> ๋ฌธ์ ๋ฅผ ์ค์ค๋ก ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐํ์ ์ ํด๋์.
+
+* ์ธ์ ๊น์ง ๋ต์ ๊ตฌํด์ผ ํ ์ง ์๊ฐํด๋ณด๊ณ , ์ง๋ฌธ์ ํ๊ณ ๋ต์ ์ฐพ๊ณ ๋ฐฐ์ด ๊ฒ์ ํ ๋๋ก ์กฐ์น๋ฅผ ์ทจํ ์ ์์ ์ ๋๋ก ์ถฉ๋ถํ ์๊ฐ์ ํ๋ณดํด์ฃผ์. ์ ํ์๊ฐ์ ๋ค ์ป๋๋ฐ ์์ง ๋ต์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด ์ง๋ฌธํ์.
+* ์ ํ ์๊ฐ์ ๋๋ฆฌ๋ ๊ฒ์ ์ค์ค๋ก์ ๋
ธ๋ ฅ์ด ์ ๋๋ก ์ง์ฒ์ ์ด๋ฃฐ ๊ฒฝ์ฐ์๋ง ํ์ฉํ์.
+
+**8. ์์ ์ด ์๋ํ ๋ฐฉ๋ฒ์ ๊ณต์ ํ์**
+
+* ๊ธฐ๋กํด๋ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ๋ถ์ด **์๋ํด๋ณธ ๋ฐฉ๋ฒ๊ณผ ์์๋ธ ๋ด์ฉ์ ๊ฐ๊ฒฐํ๊ฒ ์์ฝํ์.**
+* ์ง๋ฌธ์ ํ๋ ค๋ฉด, ์ปจํ
์คํธ๋ฅผ ์ ๊ณตํ๊ณ ๋ฌธ์ ๋ฅผ ์ค๋ช
ํ๋ฉฐ ์ง๊ธ๊น์ง ์๋ํ ๋ฐฉ๋ฒ์ ์ ๋ฌํ๋ฉฐ, ๋์์ ์์ฒญํ๋ค. ๋ํ ๋ฌธ์ ์ ์ํฅ๋ ฅ๊ณผ ๊ธด๊ธ๋์ ๋ํด์ ์ฒจ์ธํ๋ค.
+
+**9. ๋๋ฃ๋ฅผ ๋ฐฉํดํ์ง ๋ง์**
+
+* ๊ฐ์์ ์
๋ฌด์ ์ง์คํ๊ณ ์๋ค๋ฉด ๋ฐฉํดํ์ง ๋ง์
+
+**10. ๋น๋๊ธฐ์ ๋ฉํฐ์บ์คํ
์์ฌ์ํต์ ์๋ํ์.**
+
+* ์ง๋ฌธ์ ์ฌ๋ฌ ์ฌ๋(๋ฉํฐ์บ์คํธ)์ด ๊ฐ์์ ์ํฉ์ ๋ฐ๋ผ(๋น๋๊ธฐ์ = ๋ฐ๋ก ๋ตํ์ง ์๊ณ ๋์ค์ ์ฒ๋ฆฌ) ์๋ตํ ์ ์๋ ๊ณณ์ ์ฌ๋ฆฌ์
+
+**11. ๋๊ธฐ์ ์์ฒญ์ ํ ๋ฒ๋ง ๋ณด๋ด์**
+
+### 8. ์ฑ์ฅ์ ์ฅ์ ๋ฌผ์ ๊ทน๋ณตํ์.
+
+#### ๐ ๊ฐ๋ฉด ์ฆํ๊ตฐ
+
+1. ๋๋ถ๋ถ์ ์ ์
์์ง๋์ด๋ ์์์ ๋ฅ๋ ฅ๋ถ์กฑ ์ํ์์ ์์
+2. ๊ฐํน ์ค์ค๋ก์๊ฒ ๋๋ฌด ์๊ฒฉํด์ง๊ธฐ๋ ํ๋ค.
+3. ์๊ธฐ ์ค์ค๋ก์ ๋ํ ๋ถ์ ์ ๋๊ตฌ๋์๊ฒ ์๋ ๋ณดํธ์ ์ธ ํ์์ด๋ผ๋ ์ ์ ์ฐ์ ์ผ๋์ ๋์
+4. ์๊ธฐ ์ธ์์ ๋์์ด ๋๋ค.
+5. ๋ฌด์ธ๊ฐ๋ฅผ ๋ฌ์ฑํ๋ค๋ฉด ๊ทธ๊ฑด ์ค์ ๋ก ์ผ์ ์ ํด๋๊ธฐ ๋๋ฌธ์ด์ง, ๊ทธ์ ์ด์ด ์ข์๊ธฐ ๋๋ญ์ด ์๋๋ค. ์นญ์ฐฌ๊ณผ ์ฑ๊ณผ๋ฅผ ์ ์จ ์ธ๋ฉดํ์ง๋ง๊ณ ์๋ฌด๋ฆฌ ์์ ์ผ์ด๋ผ๋ ๊ธฐ๋กํด๋์
+6. ํผ๋๋ฐฑ์ ๋ฐ๋ ๊ฒ๋ ๋์์ด ๋๋ค.
+
+#### ๐ ๋๋ ํฌ๋ฃจ๊ฑฐ ํ์
+
+1. ์ค์ค๋ก๋ฅผ ๊ณผ๋ํ๊ฐํ๋ ์ธ์ง์ ํธ๊ฒฌ์ ๊ฐ๋ ๊ฒ์ด๋ค.
+2. ์์ ์ด ๋ญ ๋ชจ๋ฅด๋์ง๋ฅผ ๋ชจ๋ฅธ๋ค.
+3. ์์์ ์ผ๋ก ํธ๊ธฐ์ฌ์ ๊ณ๋ฐํ๋ ๊ฒ๋ถํฐ ์์ํ์.
+4. ๊ทธ๋ฆฌ๊ณ ์์ ์ด ํ๋ฆด ์๋ ์์์ ์ธ์ ํ์.
+5. ์์ ์ด ์กด๊ฒฝํ๋ ์์ง๋์ด๋ฅผ ์ฐพ์ ์ฌ๋ฌ๋ถ์ด ์ํ๊ณ ์๋์ง๋ฅผ ๋ฌผ์ด๋ณด๊ณ ๊ฒฝ์ฒญํ์
+
+### 9. ๊ฐ๋ฐ์์ ํ์ ์ฒดํฌ๋ฆฌ์คํธ
+
+| โญ ์ด๊ฒ๋ง์ ์งํค์ | โ ์ด๊ฒ๋ง์ ํผํ์ |
+| ----------------------------------- | ----------------------- |
+| ์ฝ๋๋ฅผ ์ด์ฉํด ์์ฃผ ์คํํ์ | ์๋ฌด ์๊ฐ ์์ด ์ฝ๋๋ง ์ฐ์ด๋ด์๋ ์๋๋ค. |
+| ์ค๊ณ๋ฌธ์์ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ ์ฝ๋๋ฅผ ์ฝ์ | ์ํ๊ณผ ์คํจ๋ฅผ ๋๋ ค์ํ์ง ๋ง์ |
+| ๋ฐ์
, ์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ, ๊ด์ฌ ๊ทธ๋ฃน, ๋ฉํ ์ญ ํ๋ก๊ทธ๋จ์ ์ฐธ์ฌํ์ | ๋๋ฌด ์ฆ์ ์ปจํผ๋ฐ์ค ์ฐธ์์ ๊ธ๋ฌผ์ด๋ค. |
+| ๋ฉํฐ์บ์คํธ/๋น๋๊ธฐ์์ผ๋ก ์์ฌ์ํตํ์ | ์ง๋ฌธํ๊ธฐ๋ฅผ ๋๋ ค์ํ์ง ๋ง์. |
+| ์ธํฐ๋ทฐ๋ ๋ฉด์ ๊ธด๊ธ๋์ ๊ต๋ ์
๋ฌด๋ฅผ ๋ฐ๋ผ ๋ค๋
๋ณด์ | |
+
+## โ ํ๊ณ
+
+> ์ง๊ธ ๊ธ์ ์ฐ๊ณ ์๋ ์์ ์๋ 3์ฅ๊น์ง ์ฝ์ด๋ดค๋๋ฐ ํ์ฌ์ ๊ฐ์ ์ฒ์ ํค๋งค๋ ์ฌ๋์ด๋ ๊ณต๋ถํ๋ ๋ฐฉํฅ์ ๋ชจ๋ฅด๊ฒ ๋ ์ฌ๋์๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค. _**ํนํ ์๋ฌ ๋ฌ์ ๋ ์คํ ํธ๋ ์ด์ค๋ฅผ ๋ณด๋ ๊ฒ ๊ตญ๋น์์๋ ๋๋ถ๋ถ ์ฌ๋๋ค์ด ์ด๊ฑธ ๋ณด๋ ๊ฑฐ ์ด๋ ค์ ํ๋ค. ์ด ์ ์๋ผ..? ์..? ์ฌ๊ธฐ์ ๋์ด๊ณ ๋ฌด์จ ์ด์ ์ธ์ง ์ฝ์์ ๋ณผ๋ ค๊ณ ํ์ง ์๋๋ค ๊ทธ๊ฑด ๋๋ ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค.**_
+
+๊ฑฐ๊ธฐ์ ๋ณด๊ณ ์ด์ ๋ฟ ์๋๋ผ ์์์ ์ค๋ช
ํ ๊ฒ ์ฒ๋ผ nullpointException์ด ์ ํํ ์ธ์ ๋๋ ์ง ๋ฑ์ ์์๋๋ ๊ฒ ๋ํ ์ค์ํ๋ค ์๊ฐํ๋ค.
diff --git "a/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 3\354\236\245_.md" "b/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 3\354\236\245_.md"
new file mode 100644
index 0000000..4d1131c
--- /dev/null
+++ "b/developLog/book/onboarding/_ \355\225\204\353\217\205 \352\260\234\353\260\234\354\236\220 \354\230\250\353\263\264\353\224\251 \352\260\200\354\235\264\353\223\234 3\354\236\245_.md"
@@ -0,0 +1,243 @@
+---
+description: ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 3์ฅ
+---
+
+# ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋ 3์ฅ
+
+![](https://velog.velcdn.com/images/prettylee620/post/af06762e-057f-4f79-9e78-1b82d5aedf25/image.png)
+
+## ์ฝ๋์ ํจ๊ป ์ถค์ - ๋ ๊ฑฐ์ ์ฝ๋์ ์ํ๋ ์์ธ
+
+> ํ๋
๊ฐ๋ฐ์ ์จ๋ณด๋ฉ ๊ฐ์ด๋์ ์ฝ๊ณ ์ ๋ฆฌํ๋ ๊ธ์ด๋ฉฐ, ํน์ ๋ฌธ์ ๊ฐ ๋๋ฉด ์ญ์ ํ๊ฒ ์ต๋๋ค.
+
+#### ๐ ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ ๊ฑฐ์ ์ฝ๋๋?
+
+* ์ ์ฐ, ์ฐ๋ฌผ์ด ๋ ์ฝ๋
+* ๊ฒ๋ฐ : ๊ธฐ์ ์ ์ธ ๋ถ๋ถ OS, ๋ ์ด์ ์ฐ๊ธฐ ํ๋ค๊ฑฐ๋ ํ๋๊ฒ ํ๋ ์ฝ๋
+
+1. ๋ค๋ฅธ์ฝ๋์์ ๊ฐ์ฐ์ฑ์ ๋ฌด์ํ ์ฑ Due Date๋ง ๋ง์ถฐ ์์ฑํ ์ฝ๋
+2. ์ฝ๋์ ์ข
์์ฑ, ๋ํ๋์ค๋ฅผ ๋ฎ์ถ๋ ค๋ ๋
ธ๋ ฅ์ด 1๋ ์๋ ์ฝ๋
+3. ์ฝ๋ฉํธ ๋ฑ์ ์ ํ ๋จ๊ธฐ์ง ์์ ๋ ์ด์ ์์ , ๋ณด์์ด ์ด๋ ค์ด ์ฝ๋
+4. ๊ธฐ๋ฅ ๋จ์์ ํจ์ ๋์๊ฐ ๋ชจ๋ ์์ฒด๊ฐ ์ง๋์น๊ฒ ํฐ ์ฝ๋, **๊ฐ๋ฐ ์ฝ๋๋ ์์กด์ฑ์ด ๋ฎ์์ผ ํ๋ค.**
+
+### 1. ๋ค์ด๊ฐ๊ธฐ
+
+> ์ฝ๋๋ฒ ์ด์ค๋ ๋ง์น ์๋ฅผ๋ฅด์ ์ํ ๊ฒฝ๊ธฐ์ฅ๊ณผ ์ ์ฌํ๋ค. _**ํ ์ธ๋๊ฐ ์ฌ๋ฌ ๊ณ์ธต์ ์์ฑํ๊ณ ๋์ค์๋ ๋ ๋ฐ๋๋ค.**_ ํ ์ธ๋๊ฐ ์ฌ๋ฌ ๊ณ์ธต์ ์์ฑํ๊ณ ๋์ค์๋ ๋ ๋ฐ๋๋ค. ๋ง์ ์ฌ๋์ด ์ฝ๋์ ์์ ๋๋ค. ํ
์คํธ์ ๋๋ฝ๋ ๋ถ๋ถ์ด ์๋๋ ์ค๋ ์ ์ ๊ฐ์ค์ ๊ฐ์ ํ๋ ํ
์คํธ๊ฐ ์์ ์๋ ์๋ค. ์๊ตฌ์ฌํญ์ ๋ณํ๋ ์ฝ๋์ ์ฌ์ฉ ๋ฐฉ์๊ณผ ์ฝํ ์๋ค.
+
+### 2. ์ํํธ์จ์ด ์ํธ๋กํผ๋ ๋์ด๋๊ฒ ๋ง๋ จ์ด๋ค.
+
+#### ๐ ์ํํธ์จ์ด ์ํธ๋กํผ
+
+* ์ฝ๋๊ฐ ์ง์ ๋ถํด์ง๋ ๊ฒ์ ๋ปํ๋ค.
+* ๊ฐ๋ฐ์๊ฐ ๋ค๋ฅธ ์ฌ๋์ด ์ด ์ฝ๋๋ฅผ ์ดํด๋ชปํ๊ฑฐ๋ ๋ฒ๊ทธ ์์ ๋ฑ ๋ค์ํ ์ด์ ๋ก ์๊ธด๋ค.
+* ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
+
+#### ๐ ๊ด๋ฆฌ ๋ฐฉ๋ฒ
+
+* **์ฝ๋ฉ ์คํ์ผ๊ณผ ๋ฒ๊ทธ ํ์ง ๋๊ตฌ**๋ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๋ ๋ฐ ๋์์ ์ค๋ค. -\*\* ์ฝ๋ ๋ฆฌ๋ทฐ\*\* ์ญ์ ์ง์์ ์ ํํ๊ณ ์ฝ๋์ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋๋ค.
+* ์ง์์ ์ธ\*\* ๋ฆฌํฉํฐ๋ง\*\*์ ํตํด ์ํธ๋กํผ๋ฅผ ๋ฎ์ถ ์๋ ์๋ค.
+
+### 3. ๊ฒฐ์ฝ ํผํ ์ ์๋ ๊ธฐ์ ๋ถ์ฑ
+
+#### ๐ ๊ธฐ์ ๋ถ์ฑ
+
+* ์ํํธ์จ์ด ์ํธ๋กํผ๋ฅผ ๊ฐ์ค์ํค๋ ์ฃผ์ ์์ธ
+* ๊ธฐ์กด ์ฝ๋์ ๋จ์ ์ ์์ ํ๋ฉด์ ๋์ค์ ๋ฏธ๋ค๋ ์์
์ ๋งํ๋ค.
+* ์ฐจ์ ์ฑ
์ ์ ํํ ์๋ก ๊ตฌํํ๋ฉด์ ์ ์ฐจ ๋ณต์ก๋๊ฐ ์ฌ๋ผ๊ฐ๋ฉฐ, ๋น์ฉ ๋ํ ์ ์ ๋์ด๋๋ค.
+* ๋ ๊ฑฐ์ ์ฝ๋๋ ์ ๋ง์ ๊ธฐ์ ๋ถ์ฑ๊ฐ ์ฐ์ฌํด ์๋ค.
+
+#### ๐ ๊ธฐ์ ๋ถ์ฑ ๋งคํธ๋ฆญ์ค
+
+\
+1\. **์ ์คํ ๊ณ ๋ฏผํ๋ค ์๋์ ์ผ๋ก ๋ง๋ค์ด์ง ๋ถ์ฑ**๋ ๋ณดํธ์ ์ผ๋ก ๋ฐ์ํ๋ ๊ธฐ์ ๋ถ์ฑ ์ ํ์ด๋ค. ๋์ค์ ํ์ด ํด๊ฒฐ ๊ฐ๋ฅํ๋๋ก ํ๋ จ๋๋ถ์ฑ๋ผ๋ฉด ์ด๋ ์ข์ ๋ถ์ฑ๋ผ๊ณ ํ ์ ์๋ค. 2.\*\* ์ ์คํ์ง ๋ชปํ์ง๋ง ์๋์ ์ผ๋ก ๋ง๋ค์ด์ง ๋ถ์ฑ\*\*๋ ์ฃผ๋ก ํ์ด ์ถ์์ผ ์๋ฐ์ ๋ฐ๋ ์ํฉ์์ ๋ง๋ค์ด์ง๋ค. ๋ณดํต ์ผ๋จ์ด๋ผ๋ ๋จ์ด๊ฐ๋ค์ด ๊ฐ๋ค. 3. **์ ์คํ์ง๋ ์๋์น๋ ์๋ ๋ถ์ฑ**๋ ์์๋ ๋ถ์ฑ๋ ์๋ ค์ง์ง ์์ ๋ฏธ์ง, ๋ชฐ๋ผ์ ๋ชจ๋ฅด๋ ๊ฒ๋ค ๋๋ฌธ์ ๋ฐ์ํ๋ค. ๊พธ์คํ ํ์ต๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ํ์ํ๋ค, 4. **์ ์คํ์ง๋ง ์๋์น ์๋ ๋ถ์ฑ**๋ ์ฑ์ฅ ๊ณผ์ ์์ ์์ฐ์ค๋ฝ๊ฒ ๋ํ๋๋ ๊ฒฐ๊ณผ๋ค. ๋จ์ํ ๋๊ตฐ๊ฐ๊ฐ ์ ๋๋ก ์ผ์ ํ์ง ์์์์๊ธฐ๋ ๊ฒ์ด ์๋๋ผ ๋ฌธ์ ๋๋ฉ์ธ์ ๋ํด ๋ฐฐ์ฐ๋ ๊ณผ์ ์ด๋ ์ํํธ์จ์ด ์ํคํ
ํธ๊ฐ ์ฑ์ฅํ๋ ๊ณผ์ ์ค ๋ฐ์ํ๋ ์์ฐ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ค.
+
+| | ์ ์คํ์ง ๋ชปํ ์ ํ | ์ ์คํ ์ ํ |
+| --------- | ------------- | --------------------- |
+| ์๋ํ ์ ํ | ์ค๊ณํ ์๊ฐ์ด ์์ด์ | ์ผ๋จ ์ถ์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋์ฒํฉ์๋ค. |
+| ์๋์น ์์ ์ ํ | ๊ณ์ธตํ๊ฐ ๋๋์ฒด ๋ญ๊ฐ์? | ๋ญ ์ค์ํ๋์ง ์ด์ ์๊ฒ ๋ค์ |
+
+### 4. ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ
+
+* ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๋ก ํ๋ฌ๋์ ์จ์ธ์์ด ๋ฉ์ถฐ์ฃผ์ง๋ ์๋๋ค. ๊ทธ๋ฌ๋ ์
๋ฌด๋ฅผ ์งํํ๋ฉด์ ํ์ํ ๋ถ๋ถ์ ์ ๋ฆฌํ๊ณ ์กฐ๊ธ์ฉ ๋ฆฌํฉํฐ๋ง์ ํ์. ๋ณ๊ฒฝ์ฌํญ์ ์๊ณ ๋
๋ฆฝ์ ์ธ ์ปค๋ฐ๊ณผ PR(ํ ๋ฆฌํ์คํธ)๋ก ๋ง๋ค์
+* ๋ถ์ฑ๋ฅผ ํด๊ฒฐํ๋ฉด ์ถ์ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ ๋ถ์ฑ๋ฅผ ์์๋๋ฉด ์ถ์ ์๋๊ฐ ๋๋ ค์ง๋ค.
+
+#### ๐ ๋๊ท๋ชจ ๋ฆฌํฉํฐ๋ง
+
+* ๋ง์ผ ๋๊ท๋ชจ ๋ฆฌํฉํฐ๋ง์ด๋ ์ฌ์์ฑ์ ์ ์ํ๋ ค ํ๋ค๋ฉด ํ๊ณผ๋จผ์ ์๋
ผํด๋ณด์
+
+> 1. ์ํฉ์ ์ฌ์ค ๊ทธ๋๋ก ์ค๋ช
ํ๋ค.
+> 2. ๋ถ์ฑ์ ์ํ๊ณผ ๋น์ฉ์ ๊ธฐ์ ํ๋ค.
+> 3. ํด๊ฒฐ์ฑ
์ ์ ์ํ๋ค.
+> 4. (๋ถ์ฑ๋ฅผ ๊ทธ๋๋ก ๋๋ ๋ฐฉ๋ฒ์ ๋น๋กํด) ๋์์ ๋ํด ๋
ผ์ํ๋ค.
+> 5. ํธ๋ ์ด๋์คํ๋ฅผ ๋ฐ์ ธ๋ณธ๋ค.
+
+### 5. ์ฝ๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ๊ณ ํต์ ์กฐ๊ธ์ด๋ผ๋ ์ค์ด๋ ค๋ฉด
+
+1. ์ฝ๋ ๋ณ๊ฒฝ์ ์๋ก์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฅธ ์ฐจ์์ ๋ฌธ์ ์ด๋ค.
+2. ๊ธฐ์กด์ ๋์์ ์ ์งํ๋ฉด์ ๋ณ๊ฒฝํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ฉฐ, ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์ฌ๊ณ ๋ฐฉ์์ ์ดํดํ๊ณ ๊ธฐ์กด ์คํ์ผ๊ณผ ํจํด์ ์ ์งํ๋ ๊ฒ
+
+### 6. ๋ ๊ฑฐ์ ์ฝ๋ ๋ณ๊ฒฝ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์
+
+> ์ฒ์ 4๊ฐ์ ๊ณผ์ ์ ๋ฐญ์ ์จ๋ฅผ ๋ฟ๋ฆฌ๋ 5๋ฒ์งธ ๊ณผ์ ์ ์ ์ฃผ๋ณ์ ์ ๋ฆฌํ๊ณ ์ธํ๋ฆฌ๋ฅผ ์น๋ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ์.
+
+#### ๐ 1) ๋ณ๊ฒฝ ์ง์ ์ ํ์ธํ์.
+
+* ๋ฐญ์ ์จ๋ฅผ ๋ฟ๋ฆฌ๋ ์์ ์ ๋น๋์ด ์๊ฐํด๋ณด๋ฉด ๋ณ๊ฒฝํด์ผ ํ ์ง์ ์ด ๋ฐ๋ก ์จ๋ฅผ ๋ฟ๋ฆฌ๋ ์ง์ ์ด๋ค.
+
+#### ๐ 2) ํ
์คํธ ํ ์ง์ ์ ํ์ธํ์
+
+* ์์ ํ๊ณ ์ ํ๋ ์ฝ๋์ ์ง์
์ , ์ฆ ํ
์คํธ๊ฐ ์ง์ ํธ์ถํ๊ณ ๊ฐ์ ๋ฃ์ด๋ณด๋ ๋ถ๋ถ์ด๋ค.
+* ํ
์คํธ ์ง์ ์ _**๋ณ๊ฒฝ ์ ์ ํ์ฌ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ณด์ฌ์ฃผ๋ฉฐ ์ด ์ง์ ์ ์ด์ฉํด ๋ณ๊ฒฝํ๋ ์ฝ๋ ํ
์คํธ**_
+
+#### ๐ 3) ์์กด์ฑ์ ๋๋๋ค.
+
+> ๊ฐ์ฅ ์ํํ ๊ณผ์ ์ผ๋ก ์กฐ๊ธ์ฉ ์์
์ ์งํํ๋, ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ์๋จ, ํ
์ค๋ ์์ฃผ ์คํํ ์ ์๋๋ก ๋นจ๋ฆฌ ๋์ํ๊ฒ ๋ง๋ค์!
+
+* ํ
์คํธ ์ง์ ์ ์ฐพ๊ธฐ ์ํด ์์กด์ฑ์ ๋๋ ํ์๊ฐ ์๋ค.
+* ์ฌ๊ธฐ์ ๋งํ๋ `์์กด์ฑ` : ์ฝ๋๋ฅผ ํ
์คํธํ๊ธฐ ์ํด ํ์ํ ๊ฐ์ฒด๋ ๋ฉ์๋๋ฅผ ์๋ฏธ
+* `์์กด์ฑ์ ๋๋๋ค` : ํ
์คํธ๊ฐ ์ฉ์ดํ์ง ์์ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พผ๋ค๋ ๋ป
+
+**์์กด์ฑ์ ๋๋๋ ๋ฐฉ๋ฒ**
+
+1. ํฌ๊ณ ๋ณต์กํ ๋ฉ์๋๋ **๋ ์์ ํฌ๊ธฐ์ ๋ฉ์๋๋ก ๋๋ ์ ๊ฐ๊ธฐ ๋ถ๋ฆฌ๋ ๊ธฐ๋ฅ์ด ๋
๋ฆฝ์ ์ผ๋ก ํ
์คํธ** ๋ ์ ์๊ฒ ํ๋ค.
+2. ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด์, ๋ณต์กํ ๊ฐ์ฒด๋ฅผ ์์ ํ์ง๋ ์์๋ ํ
์คํธํ๊ธฐ์๋ **์ถฉ๋ถํ ๋จ์ ๊ตฌํ์ฒด๋ก ๋์ฒดํ ์ ์๋ ๋ฐฉ๋ฒ**์ ๋ง๋ จํ๋ค.
+3. ์๊ฐ์ ํ๋ฆ๊ฐ์ด ์ ์ดํ๊ธฐ ์ด๋ ค์ด ์คํํ๊ฒฝ์ ์๋ฌผ๋ ์ด์
ํ ์ ์๋ ๋ช
์์ ์ ์ด ์ง์ ์ฃผ์
+
+**์ข ๋ ์ฝ๊ฒ ํ
์คํธ ํ๊ธฐ ์ํด ์ ๊ทผ์ ์ด์ ๋ณ๊ฒฝํ์ง ๋ง์**
+
+* `์บก์ํ`์ ๋ฌธ์ ๊ฐ ์๊น
+
+#### ๐ 4) ํ
์คํธ๋ฅผ ์์ฑ
+
+> ์์กด์ฑ์๋๋๊ณ ๋ฆฌํฉํฐ๋ง์ ํ๋ฉด์ ๊ธฐ์กด ๋์์ ํ์ธํ ์ ์๋ ์๋ก์ด ํ
์คํธ ์ถ๊ฐ
+
+* ์๋ ํ
์คํธ ๋๊ตฌ ์ฌ์ฉ ๊ณ ๋ ค\[6์ฅ์ ์์ธํ ๋์จ๋ค๊ณ ํจ]
+
+#### ๐ 5) ์ฝ๋ ๋ณ๊ฒฝ
+
+### 7. ์ฝ๋๋ ์ฒ์๋ณด๋ค ๋ ๊น๋ํ๊ฒ ์ ์งํ์
+
+> ์ด๋ฆ์ด ๋๋ฌด ๊ธด ๋ฉ์๋, ํด๋์ค, ์ค๋ณต ์ฝ๋, ๋๋ฌด ๋ง์ ๋ถ๊ธฐ๋ ๋ฃจํ, ๋๋ฌด ๋ง์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฐพ์์ฃผ๋ \*\*๋ฆฐํฐ(linter)๋ ์ฝ๋ ํ์ง ๋๊ตฌ๊ฐ ๋ง์ \*\* ๊ด๋ จ ๋งํฌ : [์ฝ๋ ํ์ง ๊ฐ์ฌ๋ฅผ ์ํ 9๊ฐ์ง ์ต๊ณ ์ ๋๊ตฌ](https://hashdork.com/ko/%EA%B0%90%EC%82%AC-%EC%BD%94%EB%93%9C-%ED%92%88%EC%A7%88-%EA%B4%80%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%B5%9C%EA%B3%A0%EC%9D%98-%EB%8F%84%EA%B5%AC/) ๊ด๋ จ ๋งํฌ : [linter](https://www.testim.io/blog/what-is-a-linter-heres-a-definition-and-quick-start-guide/)
+
+1. ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ฑฐ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋๋ ์ฃผ๋ณ ์ฝ๋๋ฅผ ์ ๋ฆฌํ์.
+2. \_**์ฝ๋๋ฅผ ์ ๋ฆฌํ๋ ์ปค๋ฐ์ ๋์์ ๋ณ๊ฒฝํ๋ ์ปค๋ฐ๊ณผ ๊ตฌ๋ถ**\_ํ์.
+3. ์ปค๋ฐ์ ํฌ๊ธฐ๊ฐ ์์์๋ก ๋ณ๊ฒฝ์ฌํญ ๋ฆฌ๋ทฐ์๋ ์ข์
+
+#### ๐ ์ฝ๋ ์
์ทจ
+
+* ๋ฒ๊ทธ๋ ์๋์ง๋ง ๋ฌธ์ ๋ฅผ ์ ๋ฐํ ์ ์๋ ํจํด์ ์ฌ์ฉํ๋ ์ฝ๋
+* ์ด ์ฝ๋ ์์๋ ๋ฌธ์ ๊ฐ ์์ผ๋
+
+```java
+if(a ๋ณ๊ฒฝํ ์ฝ๋๋ ๊น๊ณผ ๊น์ ๋ฒ์ ์ ์ด ์์คํ
์ ์ปค๋ฐํด์ผ ํ๋ค.
+
+#### ๐ ๋ณ๊ฒฝ์ฌํญ์ ์ผ์ฐ ๊ทธ๋ฆฌ๊ณ ์์ฃผ ์ปค๋ฐ
+
+* ์ปค๋ฐ์ ์์ฃผํ๋ฉด **์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ** ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋ณํํด๊ฐ๋์ง ๋ณผ ์ ์๊ณ , ๋ณ๊ฒฝ์ ๋๋๋ฆด ์ ์์ผ๋ฉฐ, ์๊ฒฉ ๋ฐฑ์
์ผ๋ก๋ ํ์ฉ ๊ฐ๋ฅ
+* ํ์ง๋ง\*\* ์๋ฏธ ์๋ ๋ฉ์ธ์ง๋ค์ ๋ฆฌ๋ทฐ ์์ฒญ ์ ๋ธ๋์น๋ฅผ\*\* `๋ฆฌ๋ฒ ์ด์ค(rebase)`ํ๊ฑฐ๋ ์ปค๋ฐ์ `์คํด์(squash)`ํด์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ช
๋ฃํ๊ฒ ์ ๋ฌ
+* ๋ฆฌ๋ฒ ์ด์ค : ๊น์์ ์ ๊ณตํ๋ ์ธํฐ๊ทธ๋ ์ด์
๋ช
๋ น์ด
+* ์คํด์ : ์ปค๋ฐ ํ์คํ ๋ฆฌ ์กฐ์
+
+#### ๐ ์ปค๋ฐ ์คํด์๋ ํ์ ๊ท์น์ ๋ฐ๋ฅผ ๊ฒ
+
+* ๋ณดํต์ **\[MYPROJ-123 ๋ฐฑ์๋์ ํฌ์คํธ๊ทธ๋ ์ค DB ๋์
]** ์ปค๋ฐ ๋ฉ์ธ์ง ์์ `์ด์ ID`๋ฅผ ๋ถํ
+
+#### ๐ ๊น COMMIT ๋ฉ์ธ์ง ์์ฑ 7๊ฐ์ง ์๋ น
+
+๊ทธ ์ธ ์ฐธ์กฐ\[๋๋ฌธ์ ๊ด๋ จ ๋ด์ฉ ์ฐธ์กฐ] : https://velog.io/@yeongmins/%EA%B9%83%ED%97%88%EB%B8%8CGitHub-%EC%A0%95%EB%A6%AC
+
+1. ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ ์ฌ์ด์ ๋น ์ค์ ํ ํ ์ฝ์
ํ๋ค,
+2. ์ ๋ชฉ์ 50์ ์ด๋ด๋ก ์ ํํ๋ค.
+3. ์ ๋ชฉ์ ๋๋ฌธ์๋ก
+
+> feat : ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ fix : ๋ฒ๊ทธ ์์ docs : ๋ฌธ์ ์์ style : ์ฝ๋ ์คํ์ผ ๋ณ๊ฒฝ (์ฝ๋ ํฌ๋งคํ
, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ ๋ฑ) design : ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ (CSS ๋ฑ) test : ํ
์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง (Test Code) refactor : ๋ฆฌํฉํ ๋ง (Production Code) build : ๋น๋ ํ์ผ ์์ ci : CI ์ค์ ํ์ผ ์์ perf : ์ฑ๋ฅ ๊ฐ์ chore : ์์ํ ์์ ์ด๋ ๋น๋ ์
๋ฐ์ดํธ rename : ํ์ผ ํน์ ํด๋๋ช
์ ์์ ๋ง ํ ๊ฒฝ์ฐ remove : ํ์ผ์ ์ญ์ ๋ง ํ ๊ฒฝ์ฐ
+
+4. ์ ๋ชฉ ๋์ ๋ง์นจํ๋ฅผ ๋ถ์ด์ง ์๋๋ค.
+5. ์ ๋ชฉ์ ๋ช
๋ นํ ๋ฌธ์ฅ์ผ๋ก ์์ฑํ๋ค.
+6. ๋ณธ๋ฌธ์ ๊ฐ ํ์ 72์๋ฅผ ๋์ง ์๊ฒ ํ๋ค.
+7. ๋ณธ๋ฌธ์๋ ์ฝ๋๊ฐ `์ด๋ป๊ฒ` ๋ฐ๋์๋์ง ๋ณด๋ค๋ \*\*๋ฌด์จ ์ฝ๋๊ฐ ์ ๋ฐ๋์๋์ง ์ค๋ช
\*\*
+
+### 12. ๊ทธ ์ธ
+
+#### ๐ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋น ์ง๊ธฐ ์ฌ์ด ํจ์ ์ ์ต๋ํ ํผํ๋ ค๋ฉด
+
+* ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์์ฑํ๋ ค ํ๋ค๊ฑฐ๋ ํ์ค์ ๋ฌด์ํ๋ ํ๋์ ์ํํ๋ค.
+* ๊ฐ์ ํ ์ฝ๋๋ ๊ธฐ์กด ์ฝ๋๋ณด๋ค ๋ช ๋ฐฐ ์ข์์ผ ํ๋ค.
+* ๊ณ ๋ถ๊ฐ๊ฐ์น๋ฅผ ๋ผ ์ ์๋ ์ํฉ์์๋ง ์ฌ์์ฑํ์
+
+#### ๐ ๋๋๋ก ๊ฒ์ฆ๋ ๊ธฐ์ ์ ์ฌ์ฉํ์
+
+* ์ฑ๊ณต์ ์ธ ๊ธฐ์
์ด ์ค๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๋๋ ํจํด์ผ๋ก ๊ฒฌ๊ณ ํ ์ฝ๋๋ฅผ ์ ์งํ ์ ์๋ ๋ฐ ์ด์ ๊ฐ ์๋ค.
+* \*\*์๋ก์ด ๊ธฐ์ ์ ๋ฌธ์ ์ ์ ์ฑ์ํ์ง ๋ชปํ๋ค๋ ์ ์ด๋ค. \*\*
+* ์๋ก์ด ๊ธฐ์ ์ ์์ธ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ๋ฐํ๋ค.
+* ๊ฒ๋ค๊ฐ ์๋ก์ด ๊ธฐ์ ์ ์คํ์ค๋ฒํ๋ก์์ ๊ด๋ จ ๋ต๋ณ์ ์ฐพ๊ธฐ๋ ์ด๋ ต๋ค.
+* ์ ๊ธฐ์ ์ด ํ์ฌ์ ๊ฒฝ์๋ ฅ์ ๋์ฌ์ค ์ ์๋ค๋ฉด, ๊ทธ ๊ธฐ์ ์ ๋์
ํ ๋งํ ๊ฐ์น๊ฐ ์๋ค.
+* ์๋ก์ด ์ธ์ด๋ฅผ ์ ํํ๋ ๊ฒ์ ํ์ฌ์ ์ํ๊ณ์ ๊ธฐ์ ์คํ ์ ์ฒด๋ฅผ ๋๋ ค ๋ฃ๋๊ฒ์ด๋ค. ์๋ก์ด ๋น๋ ์์คํ
, ํ
์คํธ ํ๋ ์์ํฌ, IDE ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ๋ฐ๋์ ์ง์ํด์ผ ํ๋ค.
+* ์๋ก ์ ํํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ํ๊ณ๊ฐ ์ผ๋ง๋ ์ฑ์ํด์ ธ ์๋์ง๋ ํนํ ์ค์ํ ์ฌ์์ด๋ค.
+* ์ธ์ด๊ฐ ์ฌ์ฅ๋์ง ์๋ ํ, ๋จ์ง ์ค๋๋๋ค๊ฑฐ๋ ๊ด์ฌ์ด ์ค์๋ค๋ ์ฌ์ค์ด ๊ทธ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง ์์ ์ด์ ๋ ๋์ง ๋ชปํ๋ค.
+
+#### ๐ ์ ๋ฐ ์
๋์ ๋์ง๋ง์.
+
+> ๋จ์ง ๋ง์์ ๋ค์ง ์๋๋ค๋ ์ด์ ๋ก ํ์ฌ์ ํ์ค์ ๋ฌด์ํด์๋ ์๋๋ค. ํ์ค์ ๋ฐ๊ฟ ๋๋ ์ฐ์ ์์, ์์ ๊ถ ๋น์ฉ, ๊ตฌํ, ์ธ๋ถ๋ด์ญ ๋ฑ ๋ค๊ฐ๋๋ก ๊ณ ๋ คํด์ผ ํ๋ค.
+
+### 13. ๊ฐ๋ฐ์ ํ์ ์ฒดํฌ๋ฆฌ์คํธ
+
+| โญ ์ด๊ฒ๋ง์ ์งํค์ | โ ์ด๊ฒ๋ง์ ํผํ์ |
+| ----------------------- | --------------------------------- |
+| ์ ์ง์ ์ผ๋ก ๋ฆฌํฉํฐ๋งํ์ | ๊ธฐ์ ๋ถ์ฑ๋ผ๋ ๋จ์ด๋ฅผ ๋จ์ฉํ์ง ๋ง์ |
+| ๋ฆฌํฉํฐ๋ง ์ปค๋ฐ๊ณผ ๊ธฐ๋ฅ ๊ด๋ จ ์ปค๋ฐ์ ๋ถ๋ฆฌํ์ | ํ
์คํธ๋ฅผ ๋ชฉ์ ์ผ๋ก ๋ฉ์๋๋ ๋ณ์๋ฅผ ์ธ๋ถ์ ๊ณต๊ฐํด์๋ ์๋๋ค. |
+| ๋ณ๊ฒฝ์ฌํญ์ ์๊ฒ ์ ์งํ์ | ํน์ ์ธ์ด์ ์ฐ์ฐํ์ง ๋ง์ |
+| ์ฒ์ ์ํ๋ณด๋ค ์ฝ๋๋ฅผ ๋ ๊น๋ํ๊ฒ ์ ์งํ์ | ํ์ฌ์ํ์ค๊ณผ ๋๊ตฌ๋ฅผ ๋ฌด์ํด์๋ ์ ๋๋ค. |
+| ํ๋ฒํ ๊ธฐ์ ์ ์ฌ์ฉํ์ | ์
์คํธ๋ฆผ ์ปค๋ฐ์์ด ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ํฌํฌํด์๋ ์ ๋๋ค. |
+
+## ์ฝ๊ณ ๋ ๋ค
+
+> ๋ฆฌํฉํฐ๋ง๋ ์ด๊ฒ์ ๊ฒ ๊ณ ๋ คํด์ผ ํ๋ค๋ ์ ์ ์์๊ณ , ๊ทธ๋ฆฌ๊ณ ํนํ ๋จ์ ์ค๋ํ ๋๋ ๊ธฐ๊ฐ์ ๋๊ณ ์ ๋ขฐ๊ฐ์ ์๊ณ ์๊ธฐํ์๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ค ์ปค๋ฐ ๋ฉ์ธ์ง๋ ํ์ฌ, ํ ์ปจ๋ฒค์
์ ๋ง์ถ๋ ๊ฒ ๊ฐ์ฅ ์ค์ํ๋ค!!!
diff --git "a/developLog/book/oop/_ 1\354\236\245 _ \355\230\221\353\240\245\355\225\230\353\212\224 \352\260\235\354\262\264\353\223\244\354\235\230 \352\263\265\353\217\231\354\262\264_.md" "b/developLog/book/oop/_ 1\354\236\245 _ \355\230\221\353\240\245\355\225\230\353\212\224 \352\260\235\354\262\264\353\223\244\354\235\230 \352\263\265\353\217\231\354\262\264_.md"
new file mode 100644
index 0000000..6a20025
--- /dev/null
+++ "b/developLog/book/oop/_ 1\354\236\245 _ \355\230\221\353\240\245\355\225\230\353\212\224 \352\260\235\354\262\264\353\223\244\354\235\230 \352\263\265\353\217\231\354\262\264_.md"
@@ -0,0 +1,191 @@
+# 1์ฅ : ํ๋ ฅํ๋ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด
+
+> ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ํต์ฌ์ด ์์จ์ ์ธ ๊ฐ์ฒด๋ค์ ํ๋ ฅ์ด๋ผ๋ ์ฌ์ค์ ๊ฐ์กฐ
+
+
+
+ํ์ค ์์ ์กด์ฌํ๋ ์ฌ๋ฌผ์ ์ต๋ํ ์ ์ฌํ๊ฒ ๋ชจ๋ฐฉํด ์ํํธ์จ์ด ๋ด๋ถ์ ์ฎ๊ฒจ์ค๋ ์์
+
+โ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ธ ๊ฐ์ฒด์งํฅ ์ํํธ์จ์ด๋ ์ค์ธ๊ณ์ ํฌ์์ด๋ฉฐ, ๊ฐ์ฒด๋ ํ์ค ์ธ๊ณ์ ์กด์ฌํ๋ ์ฌ๋ฌผ์ ๋ํ ์ถ์ํ๋ผ๋ ๊ฒ
+
+\
+ํ์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ์, ๊ฐ์ฒด์ ์ง์ ์ ์ผ๋ก ๋์๋๋ ์ค์ธ๊ณ์ ์ฌ๋ฌผ์ ๋ฐ๊ฒฌํ ํ๋ฅ ์ ๊ทธ๋ค์ง ๋์ง ์์ผ๋ฉฐ, ์๋คํด๋ ์ ์ฌ์ฑ์ ์ฐพ๊ธฐ ์ด๋ ค์ธ ์ ๋
+
+
+
+> ๊ฐ์ฒด ์งํฅ์ ๋ชฉํ๋ ์ค์ธ๊ณ๋ฅผ ๋ชจ๋ฐฉํ๋ ๊ฒ์ด ์๋๋ค. ์คํ๋ ค ์๋ก์ด ์ธ๊ณ๋ฅผ ์ฐฝ์กฐํ๋ ๊ฒ์ด๋ค.
+
+์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ญํ ์ ๋จ์ํ ์ค์ธ๊ณ๋ฅผ ์ํํธ์จ์ด ์์ผ๋ก ๋ด๋ ๊ฒ์ด ์๋๋ผ ๊ณ ๊ฐ๊ณผ ์ฌ์ฉ์๋ฅผ ๋ง์กฑ์ํฌ ์ ์๋ ์ ์ธ๊ณ๋ฅผ ์ฐฝ์กฐํ๋ ๊ฒ์ด๋ค.
+
+\
+๊ทธ๋ ๋ค๋ฉด ๋์ํ๋ค๋ ์๊ธฐ๋ฅผ ๋ฐ๋ณตํ๋ ์ด์ ๋ ๋ญ๊น? ๊ทธ๊ฒ์ **์ค์ธ๊ณ์ ๋ํ ๋น์ ๊ฐ ๊ฐ์ฒด์งํฅ์ ๋ค์ํ ์ธก๋ฉด์ ์ดํดํ๊ณ ํ์ตํ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ด๊ธฐ ๋๋ฌธ**์ด๋ค.
+
+\
+๊ฐ์ฒด๋ฅผ ์ค์ค๋ก ์๊ฐํ๊ณ ์ค์ค๋ก ๊ฒฐ์ ํ๋ ํ์ค ์ธ๊ณ์ ์๋ช
์ฒด = ์ํ์ ํ์๋ฅผ ์บก์ํํ๋ ์ํํธ์จ์ด์ ์์จ์ฑ์ ์ค๋ช
ํ๋๋ฐ ํจ๊ณผ์
+
+\
+์ฆ, ์ค์ธ๊ณ์ ์ฌ๋ฌผ์ ๊ธฐ๋ฐ์ผ๋ก ์ํํธ์จ์ด ๊ฐ์ฒด๋ฅผ ์๋ณํ๊ณ ๊ตฌํ๊น์ง ์ด์ด๊ฐ๋ค๋ ๊ฐ๋
์ ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ํต์ฌ ์ฌ์์ธ `์ฐ๊ฒฐ์์ ์ฑ(seamlessness)`๋ฅผ ์ค๋ช
ํ๋ ๋ฐ ์ ํฉํ ํ์ ์ ๊ณตํ๋ค.
+
+\
+๊ด์ ์์๋ ๋ถ์ ํฉํ์ง๋ง ๊ฐ์ฒด์งํฅ์ด๋ผ๋ ์ฉ์ด์ ๋ด๊ธด ๊ธฐ๋ณธ ์ฌ์์ ์ดํดํ๊ณ ํ์ตํ๋ ๋ฐ๋ ๋งค์ฐ ํจ๊ณผ์
+
+## 1. ํ๋ ฅํ๋ ์ฌ๋๋ค
+
+๋ง์น ๋ฐ๋ฆฌ์คํ, ์บ์์์ด ์์ ์ ๋งก์ ๋ฐ์ธ ์ญํ ๋ฅผ ์ฑ
์์ ์ง๊ณ ํ๋ ฅํด์ ์ปคํผ๋ฅผ ์ฃผ๋ ์ถ๊ทผ์๊ฐ์ ์ปคํผ๊ฐ ๋์ฌ ์ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฒด์งํฅ์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋
3๊ฐ์ง๋ ์ญํ , ์ฑ
์, ํ๋ ฅ์ด๋ค.
+
+### 1) ์์ฒญ๊ณผ ์๋ต์ผ๋ก ๊ตฌ์ฑ๋ ํ๋ ฅ
+
+์ฌ๋๋ค์ ํด๊ฒฐํ์ง ๋ชปํ๋ฉด ์๋น์ค๋ฅผ ์ ๊ณตํด์ค ์ ์๋ ์ฌ๋์๊ฒ ๋์์ `์์ฒญ(request)`ํ๋ค.\
+์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์์ ์ฌ๋์ด ํ์ํ๋ฏ๋ก ์์ฒญ์ ์ฐ์์ ์ผ๋ก ๋ฐ์ํ๋ค.
+
+\
+์์ฒญ์ ๋ฐ์ ์ฌ๋์ ์ฃผ์ด์ง ์ฑ
์์ ๋คํ๋ฉด์ ํ์ํ ์ง์์ด๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค. ์ฆ, ๋ค๋ฅธ ์ฌ๋์ ์์ฒญ์ `์๋ต(response)`ํ๋ค.
+
+\
+์์ฒญ๊ณผ ์๋ต์ ํตํด ๋ค๋ฅธ ์ฌ๋๊ณผ ํ๋ ฅ(collaboration)ํ ์ ์๋ ๋ฅ๋ ฅ์ ์ธ๊ฐ์ผ๋ก ํ์ฌ๊ธ ๊ฑฐ๋ํ๊ณ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ณต๋์ฒด๋ฅผ ํ์ฑํ ์ ์๊ฒ ๋ง๋ ๋ค.
+
+### 2) ์ญํ ๊ณผ ์ฑ
์
+
+์ฌ๋๋ค์ ๋ค๋ฅธ ์ฌ๋๊ณผ ํ๋ ฅํ๋ ๊ณผ์ ์์์ ํน์ ํ **์ญํ (role)**๋ฅผ ๋ถ์ฌ๋ฐ๋๋ค.
+
+> ์ญํ ์ ์ด๋ค ํ๋ ฅ์ ์ฐธ์ฌํ๋ ํน์ ํ ์ฌ๋์ด ํ๋ ฅ ์์์ ์ฐจ์งํ๋ ์ฑ
์์ด๋ ์๋ฌด๋ฅผ ์๋ฏธํ๋ค.
+
+์์๋ก ๋ฐ๋ฆฌ์คํธ ์ญํ ์ ๋งก์ ์ฌ๋์ ์ฃผ๋ฌธ๋ ์ปคํผ๋ฅผ ์ ์กฐํด์ผ ํ๋ ์ฑ
์์ด ์๋ค. ์ฆ, **์ญํ **์ด๋ผ๋ ๋จ์ด๋ ์๋ฏธ์ ์ผ๋ก ์ฑ
์(responsibility)์ด๋ผ๋ ๊ฐ๋
์ ๋ดํฌํ๋ค.\
+
+
+์ญํ ๊ณผ ์ฑ
์์ ํ๋ ฅ์ด ์ํํ๊ฒ ์งํ๋๋ ๋ฐ ํ์ํ ํต์ฌ์ ์ธ ๊ตฌ์ฑ ์์์ด๋ฉฐ, ์ญํ ์ ์ ํฉํ ์ฑ
์์ ์ํํ๋ค๋ ์ฌ์ค์ ๋ช ๊ฐ์ง ์ค์ํ ๊ฐ๋
์ ์ ์ํ๋ค.
+
+* ์ฌ๋ฌ ์ฌ๋์ด ๋์ผํ ์ญํ ์ ์ํํ ์ ์๋ค. : ๋ฐ๋ฆฌ์คํ๊ฐ ์ฃผ๋ฌธ์ ๋ฐ์ ์ ๋ ์๋ ๊ฑฐ์
+* ์ญํ ์ ๋์ฒด ๊ฐ๋ฅ์ฑ์ ์๋ฏธํ๋ค. : ์๋ ์
์ฅ์์๋ ์ฃผ๋ฌธ์๋ ๋์ฒด ๊ฐ๋ฅ(substituable)ํ๋ค.
+* ์ฑ
์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์จ์ ์ผ๋ก ์ ํํ ์ ์๋ค. : ๋ฐ๋ฆฌ์คํ๋ ์์ ๋ง์ ๋
ํนํ ๋ฐฉ๋ฒ์ผ๋ก ํํธ๋ฅผ ๋ง๋ค ์๋ ์๊ฑฐ๋ ๋ ๋ค๋ฅธ ๋ฐ๋ฆฌ์คํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํํธ๋ฅผ ๋ง๋ค ์๋ ์๋ค.
+* ์ฆ, ์ปคํผ ์ ์กฐ๋ผ๋ ๋์ผํ ์์ฒญ์ ๋ฐ๋๋ผ๋ ๋ฐ๋ฆฌ์คํ์ ์ญํ ์ ์ํํ๋ ์ฌ๋๋ค๋ง๋ค ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ๊ฒ
+
+> ์ด์ฒ๋ผ ๋์ผํ ์์ฒญ์ ๋ํด ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๋ตํ ์ ์๋ ๋ฅ๋ ฅ์ ๋คํ์ฑ(polymorphism)์ด๋ผ๊ณ ํ๋ค.
+
+* ํ ์ฌ๋์ด ๋์์ ์ฌ๋ฌ ์ญํ ์ ํ ์ ์๋ค. : ํ ์ฌ๋์ด ๋ฐ๋ฆฌ์คํ์ ์ญํ ๊ณผ ์บ์์ด ๋์์ ์ํ๋ ๊ฐ๋ฅํ๋ค.
+
+## 2. ์ญํ , ์ฑ
์, ํ๋ ฅ
+
+### 1) ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ํ๋ ฅํ๋ ๊ฐ์ฒด๋ค
+
+> ์ฌ๋์ด๋ผ๋ ๋จ์ด๋ฅผ ๊ฐ์ฒด๋ก, ์์ด์ ํธ์ ์์ฒญ์ ๋ฉ์ธ์ง๋ก, ์์ด์ ํธ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฉ์๋๋ก ๋ฐ๊พธ๋ฉด ๊ฐ์ฒด์งํฅ์ด๋ผ๋ ๋ฌธ๋งฅ์ผ๋ก ์ฎ๊ฒจ์ฌ ์ ์๋ค.
+
+\
+์์ ์ด์ ๊ฐ ๋ฐ๋ก ๊ฐ์ฒด์งํฅ์ ์ค๋ช
ํ๊ธฐ ์ํด ์ค์ธ๊ณ์ ๋ชจ๋ฐฉ์ด๋ผ๋ ์์ ๋ฅผ ์ฐจ์ฉํ๋ ์ด์ \
+
+
+### 2) ์ญํ ๊ณผ ์ฑ
์์ ์ํํ๋ฉฐ ํ๋ ฅํ๋ ๊ฐ์ฒด๋ค
+
+> ์ญํ ์ ์ ์ฐํ๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ ฅ ๊ด๊ณ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํ ์ค๊ณ ์์์ด๋ค. ๋์ฒด ๊ฐ๋ฅํ ์ญํ ๊ณผ ์ฑ
์์ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ์ค์ํ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ ๋คํ์ฑ๊ณผ๋ ๊น์ด ์ฐ๊ด
+
+1. ์ฌ๋๋ค์ ์ปคํผ ์ฃผ๋ฌธ๊ณผ ๊ฐ์ ํน์ ํ ๋ชฉํ๋ฅผ ์ด๋ฃจ๊ธฐ ์ํด ํ๋ ฅ
+2. ํ๋ ฅ์ ํต์ฌ : ํน์ ํ ์ฑ
์์ ์ํํ๋ ์ญํ ๋ค ๊ฐ์ ์ฐ์์ ์ธ ์์ฒญ๊ณผ ์๋ต์ ํตํด ๋ชฉํ ๋ฌ์ฑ
+3. ๋ชฉํ๋ ์ฌ๋๋ค์ ํ๋ ฅ์ ํตํด ๋ฌ์ฑ, ๋ ์์ ์ฑ
์์ผ๋ก ๋ถํ ๋๊ณ ์ฑ
์์ ์ํํ ์ ์๋ ์ ์ ํ ์ญํ ์ ๊ฐ์ง ์ฌ๋์ ์ํด ์ํ
+4. ํ๋ ฅ์ ์ฐธ์ฌํ๋ ๊ฐ ๊ฐ์ธ์ ์ฑ
์ ์ํ์ ์ํด ๋์์ ์์ฒญํ๊ธฐ๋, ์ฐ์์ ์ธ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ๊ตฌ์ฑ๋๋ ํ๋ ฅ ๊ด๊ณ ์์ฑ
+
+\
+๊ฐ์ฒด ๊ณต๋์ฒด ์์ ์ด๊ณ ์๋ ์ฑ์คํ ๊ฐ์ฒด ์๋ฏผ์ ์์ ์๊ฒ ์ฃผ์ด์ง ์ญํ ๊ณผ ์ฑ
์์ ๋คํ๋ ๋์์ ์์คํ
์ ๋ ํฐ ๋ชฉ์ ์ ์ด๋ฃจ๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด์๋ ์ ๊ทน ํ๋ ฅํ๋ค.
+
+\
+์ฆ, ์ฌ๋๋ค์ด **๊ณตํต์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ํ๋ ฅํ๋ ๊ฒ**๊ณผ ๊ฐ์ด ๊ฐ์ฒด๋ค์ ๊ฒฝ์ฐ, ์ ํ๋ฆฌ์ผ์ด์
๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ํ๋ ฅํด์ ์ฌ์ฉ์๊ฐ ์ธ์ํ๋ ์์คํ
์ ๊ธฐ๋ฅ์ด ๋๋ ๊ฒ์ด๋ค.
+
+> ์์คํ
= ์ญํ + ์ฑ
์์ ์ํํ๋ ๊ฐ์ฒด์์คํ
์ ๊ธฐ๋ฅ = ๊ฐ์ฒด ๊ฐ์ ์ฐ์์ ์ธ ์์ฒญ๊ณผ ์๋ต์ ํ๋ฆ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋ ฅ
+
+๊ฐ์ฒด์งํฅ ์ค๊ณ๋ ์ ์ ํ ๊ฐ์ฒด์๊ฒ ์ ์ ํ ์ฑ
์์ ํ ๋นํ๋ ๊ฒ์์ ์์ํ๋ค. ์ฑ
์์ ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ํ์ง์ ๊ฒฐ์ ํ๋ ๊ฐ์ฅ ์ค์ํ ์์์ด๋ค. ์ผ๋ง๋ ์ ์ ํ ์ฑ
์์ ์ ํํ๋๋๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ฆ๋ค์์ ๊ฒฐ์
+
+> ์ญํ = ๊ด๋ จ์ฑ ๋์ ์ฑ
์์ ์งํฉ
+
+๊ฐ์ฒด์ ์ญํ ์ ํน์ง ๋ํ ์ฌ๋์ ์ญํ ๊ณผ ์ ์ฌํ๋ค.
+
+* ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ๋์ผํ ์ญํ ์ ์ํํ ์ ์๋ค.
+* ์ญํ ์ ๋์ฒด ๊ฐ๋ฅ์ฑ์ ์๋ฏธ
+* ๊ฐ ๊ฐ์ฒด๋ ์ฑ
์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์จ์ ์ผ๋ก ์ ํํ ์ ์๋ค.
+* ํ๋์ ๊ฐ์ฒด๊ฐ ๋์์ ์ฌ๋ฌ ์ญํ ์ ์ํํ ์ ์๋ค.
+
+### 3. ํ๋ ฅ ์์ ์ฌ๋ ๊ฐ์ฒด
+
+์ค๊ณฝ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ญํ , ์ฑ
์, ํ๋ ฅ์ด์ง๋ง ์ค์ ๋ก ํ๋ ฅ์ ์ฐธ์ฌํ๋ ์ฃผ์ฒด๋ ๊ฐ์ฒด์ด๋ค.\
+๊ฒฐ๊ตญ ์ฌ๋์ด ์์ผ๋ฉด ์ญํ , ์ฑ
์, ํ๋ ฅ์ด ์๋ฌด๋ฐ ์๋ฏธ๊ฐ ์๋ฏ์ด ๊ฐ์ฒด์งํฅ ์ธ๊ณ์์๋ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ์๋ฌด๋ฐ ์๋ฏธ๊ฐ ์๋ค.\
+๊ฐ์ฒด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์กด์ฌํ๋ค. ์์ฃผ ์์ ๊ธฐ๋ฅ ์กฐ์ฐจ ๊ฐ์ฒด ํผ์๋ ๋ฒ๊ฑฐ์ฐ๊ธฐ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์์ ๋ ต๋ ฅ์ ํตํด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , ๊ฒฐ๊ตญ ํ๋ ฅ์ด ์ผ๋ง๋ ์กฐํ๋ฅผ ์ด๋ฃจ๋์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ๊ฐ์ฒด์ด๋ค.\
+๊ฒฐ๊ตญ ํ๋ ฅ์ ํ์ง์ ๊ฒฐ์ ํ๋ ๊ฒ์ ๊ฐ์ฒด์ ํ์ง์ด๋ค.\
+ํ๋ ฅ ๊ณต๋์ฒด์ ์ผ์์ผ๋ก ๊ฐ์ฒด๋ 2๊ฐ์ง ๋๋ชฉ์ ๊ฐ์ถ๊ณ , ๊ท ํ์ ์ ์งํด์ผ ํ๋ค.
+
+1. ๊ฐ์ฒด๋ ์ถฉ๋ถํ ํ๋ ฅ์ ์ด์ด์ผ ํ๋ค.
+
+* ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์ฒญ์ ์ถฉ์คํ ๊ท ๊ธฐ์ธ์ด๊ณ ๋์ ์์ฒญํ ์ ๋์ ์ด๋ฆฐ ๋ง์
+* ๋ชจ๋ ๊ฒ์ ์ค์ค๋ก ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด๋ ๋ด๋ถ์ ์ธ ๋ณต์ก๋์ ์ํด ์๋ฉธ
+* ํ๋ ฅ์ : ์๋์ ์ธ ์กด์ฌ X, ์์ฒญ์ ์๋ตํ ๋ฟ ์ด๋ค ๋ฐฉ์์ผ๋ก ์๋ตํ ์ง, ์ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฐ์ฒด ์ค์ค๋ก ํ๋จํ๊ณ ๊ฒฐ์ ํ๋ค.
+
+1. ๊ฐ์ฒด๊ฐ ์ถฉ๋ถํ ์์จ์ ์ด์ด์ผ ํ๋ค.
+
+* ์์จ์ : ์๊ธฐ ์ค์ค๋ก์ ์์น์ ๋ฐ๋ผ ์ด๋ค ์ผ์ ํ๊ฑฐ๋ ์๊ธฐ ์ค์ค๋ก ํต์ ํ์ฌ ์ ์ ํ๋ ๊ฒ
+* ์ฌ๋๋ค์ ๋ค๋ฅธ ์ฌ๋์ ์์ฒญ์ ๋ฐ๋ผ ํ๋ํ์ง๋ง ์ต๋ํ ์ค์ค๋ก์ ํ๋จ์ ๋ฐ๋ฅด๊ณ ๊ฒฐ์ ํ๊ณ ํ๋ํ๋ค.
+
+\
+๊ฐ์ฒด์งํฅ ์ค๊ณ์ ๋ฌ๋ฏธ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์กฐํ๋กญ๊ฒ ํ๋ ฅํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ๊ฐ๋ฐ์ ์ธ ๋์์ ํ๋ ฅ์ ์ฐธ์ฌํ๋ ๋ฐฉ๋ฒ์ ์ค์ค๋ก ๊ฒฐ์ ํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์์จ์ ์ธ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด ์ค๊ณํ๋๋ฐ ์๋ค.
+
+#### ์ํ์ ํ๋์ ํจ๊ป ์ง๋ ์์จ์ ์ธ ๊ฐ์ฒด
+
+๊ฐ์ฒด = ์ํ(state) + ํ๋(behavior)์ ํจ๊ป ์ง๋ ์ค์ฒด์ด์ ์์จ์ ์ธ ์กด์ฌ\
+๊ฐ์ฒด๊ฐ ํ๋ ฅ์ ์ฐธ์ฌํ๊ธฐ ์ํด ์ด๋ค ํ๋์ ํด์ผ ํ๋ค๋ฉด, ๊ทธ ํ๋์ ํ๋ ๋ฐ ํ์ํ ์ํ๋ ํจ๊ป ์ง๋๊ณ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋ง์น, ์ปคํผ๋ฅผ ์ ์กฐํ๋ ๋ฐ๋ฆฌ์คํ๊ฐ ์ ์กฐ ๋ฐฉ๋ฒ์ ์๊ณ ์์ด์ผ ํ๋ค๋ ๊ฒ์ฒ๋ผ\
+๊ฐ์ฒด๊ฐ ํ๋ ฅ์ ์ฐธ์ฌํ๋ ๊ณผ์ ์์์ ์ค์ค๋ก ํ๋จํ๊ณ ์ค์ค๋ก ๊ฒฐ์ ํ๋ ์์จ์ ์ธ ์กด์ฌ๋ก ๋จ๊ธฐ ์ํด์๋ ํ์ํ ํ๋๊ณผ ์ํ๋ฅผ ํจ๊ป ์ง๋๊ณ ์์ด์ผ ํ๋ค.\
+๊ฐ์ฒด์ ์์จ์ฑ์ ๊ฐ์ฒด์ ๋ด๋ถ์ ์ธ๋ถ๋ฅผ ๋ช
ํํ๊ฒ ๊ตฌ๋ถํ๋ ๊ฒ์ผ๋ก๋ถํฐ ๋์จ๋ค. ๊ฐ์ฒด์ ์ฌ์ ์ธ ๋ถ๋ถ์ ํฐ์นํ ์ ์๊ฒ.. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ๋ฌด์(what)์ ์ํํ๋ ์ง ์ ์ ์์ง๋ง ์ด๋ป๊ฒ(how) ์ํํ๋์ง์ ๋ํด์๋ ์ ์ ์๋ค. โ ์บก์ํ๋ ์ฐ๊ด\
+์ ํต์ ์ธ ๊ฐ๋ฐ ๋ฐฉ๋ฒ vs ๊ฐ์ฒด์งํฅ
+
+* ์ ํต์ ์ธ ๊ฐ๋ฐ ๋ฐฉ๋ฒ : ๋ฐ์ดํฐ์ ํ๋ก์ธ์ค๋ฅผ ์๊ฒฉํ๊ฒ ๊ตฌ๋ถ
+* ๊ฐ์ฒด์งํฅ : ๋ฐ์ดํฐ์ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ฒด๋ผ๋ ํ๋์ ํ ์์ ํจ๊ป ๋ฌถ์ด ๋์์ผ๋ก์จ ๊ฐ์ฒด์ ์์จ์ฑ์ ๋ณด์ฅ
+
+#### ํ๋ ฅ๊ณผ ๋ฉ์ธ์ง
+
+์ธ๊ฐ์ ๊ธ์, ๋ง ๋ฑ ๋ค์ํ ๋งค์ปค๋์ฆ์ ํตํด ์์ฌ์ํต์ ํ ์ ์๋ ๊ฒ์ ๋ฐ๋๋์ด ๊ฐ์ฒด์งํฅ์ ์ธ๊ณ์์๋ ์ค์ง ํ ๊ฐ์ง ์์ฌ์ํต ์๋จ๋ง์ด ์กด์ฌํ๋ค.\
+๋ฉ์ธ์ง
+
+* ์ค์ง ํ ๊ฐ์ง์ ์์ฌ์ํต
+* ๊ฐ์ฒด ์งํฅ์ ์ธ๊ณ์์ ํ๋ ฅ์ ์ก์ ์์ ์์ ์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ก ๊ตฌ์ฑ
+* ์ก์ ์(sender) : ๋ฉ์ธ์ง๋ฅผ ์ ์กํ๋ ๊ฐ์ฒด
+* ์์ ์(receiver) : ๋ฉ์ธ์ง๋ฅผ ์์ ํ๋ ๊ฐ์ฒด
+
+#### ๋ฉ์๋์ ์์จ์ฑ
+
+๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๊ธฐ ์ํด ๋ฉ์ธ์ง๋ฅผ ์ ์กํ๋ค.\
+๋ฉ์๋(method)
+
+* ๊ฐ์ฒด๊ฐ ์์ ๋ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
+* ํด๋์ค ์์ ํฌํจ๋ ํจ์ ๋๋ ํ๋ก์์ ๋ฅผ ํตํด ๊ตฌํ
+* ๋ฐ๋ผ์ ์ด๋ค ๊ฐ์ฒด์๊ฒ ๋ฉ์์ง๋ฅผ ์ ์กํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฉ์ธ์ง์ ๋์๋๋ ํน์ ๋ฉ์๋๊ฐ ์คํ
+
+\
+์ ์ฐจ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด vs ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
+
+* ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : ๋ฉ์ธ์ง๋ฅผ ์์ ํ ๊ฐ์ฒด๊ฐ ์คํ ์๊ฐ์ ๋ฉ์๋๋ฅผ ์ ํ ๊ฐ๋ฅ
+* ์ ์ฐจ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : ํ๋ก์์ ํธ์ถ์ ๋ํ ์คํ ์ฝ๋๋ฅผ ์ปดํ์ผ ์๊ฐ์ ๊ฒฐ์
+
+๋ฉ์ธ์ง์ ๋ฉ์๋์ ๋ถ๋ฆฌ๋ ๊ฐ์ฒด์ ํ๋ ฅ์ ์ฐธ์ฌํ๋ ๊ฐ์ฒด๋ค ๊ฐ์ ์์จ์ฑ์ ์ฆ์ง\
+์ปคํผ ์ ์กฐ๋ฅผ ์์ฒญํ ์บ์์ด๋ ์ปคํผ๊ฐ ์ ์กฐ๋ ๊ฒ(what)์ด๋ผ๊ณ ๊ธฐ๋ํ์ง๋ง ์ปคํผ๋ฅผ ์ ์กฐํ๋ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ(how)์ ๊ดํด์๋ ๊ด์ฌํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋ฆฌ์คํ๋ ์ปคํผ ์ ์กฐ๋ผ๋ ๋ฉ์์ง์ ์๋ตํ๊ธฐ ์ํด ์์ ๋ง์ ์์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ปคํผ๋ฅผ ์ ์กฐํ ์ ์๋ค.\
+์บก์ํ(encapsulation)์ด๋ผ๋ ๊ฐ๋
๊ณผ๋ ๊น์ด ๊ด๋ จ
+
+### 4) ๊ฐ์ฒด์งํฅ์ ๋ณธ์ง
+
+๊ทธ๋์ ๊ฐ์ฒด์งํฅ์ด๋?
+
+* ๊ฐ์ฒด์งํฅ์ด๋ ์์คํ
์ ์ํธ์์ฉํ๋ ์์จ์ ์ธ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด๋ก ๋ฐ๋ผ๋ณด๊ณ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์์คํ
์ ๋ถํ ํ๋ ๋ฐฉ๋ฒ
+* ์์จ์ ์ธ ๊ฐ์ฒด๋ ์ํ์ ํ์๋ฅผ ํจ๊ป ์ง๋๋ฉฐ ์ค์ค๋ก ์๊ธฐ ์์ ์ ์ฑ
์์ํค๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธ
+* ๊ฐ์ฒด๋ ์์คํ
์ ํ์๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๋ค. ๊ฐ ๊ฐ์ฒด๋ ํ๋ ฅ ๋ด์์ ์ ํด์ง ์ญํ ์ ์ํํ๋ฉฐ ์ญํ ์ ๊ด๋ จ๋ ์ฑ
์์ ์งํฉ์ด๋ค.
+* ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๊ธฐ ์ํด ๋ฉ์ธ์ง๋ฅผ ์ ์กํ๊ณ , ๋ฉ์ธ์ง๋ฅผ ์์ ํ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ ํฉํ ๋ฉ์๋๋ฅผ ์์จ์ ์ผ๋ก ์ ํํ๋ค.
+
+#### ๊ฐ์ฒด๋ฅผ ์งํฅํ๋ผ
+
+์์คํค๋ชจ์ ๋์ ์ง์นญํ๋ ๋จ์ด๊ฐ 2๊ฐ๋ฟ์ธ๋ฐ ๋ง์ ๊ฒ์ฒ๋ผ ๋ถํ๋ฆฌ๊ฒ ๋๊ฒ ๋ ๊ฒ์ฒ๋ผ ํ๋ก๊ทธ๋๋ฐ ์์ ์ถํํ๋ ๊ณผ์ ์์ ํด๋์ค์ ๋ํ ์ค์์ฑ์ด ๊ณผํ๋ค ์ถ์ ์ ๋๋ก ๊ฐ์กฐ๋๋ค.\
+๊ฐ์ฒด์งํฅ์ ์ค์ฌ์ ์์ด์ผ ํ ๊ฐ์ฒด๋ก๋ถํฐ ์กฐ๊ธ์ฉ ๋ฉ์ด์ ธ ๊ฐ๋ค. ํด๋์ค๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ด์ ์์ ๋งค์ฐ ์ค์ํ ๊ตฌ์ฑ์์(construct)์ธ ๊ฒ์ ๋ถ๋ช
ํ์ง๋ง ๊ฐ์ฒด์งํฅ์ ํต์ฌ์ ์ด๋ฃจ๋ ์ค์ฌ ๊ฐ๋
์ด๋ผ๊ณ ๋งํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์๋ค.\
+์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ ํ๋กํ ํ์
๊ธฐ๋ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด์์๋ ํด๋์ค๊ฐ ์กด์ฌํ์ง ์๋๋ค.\
+ํ๋ฅญํ ๊ฐ์ฒด์งํฅ ์ค๊ณ์๊ฐ ๋๊ธฐ ์ํด์
+
+1. ์ฝ๋๋ฅผ ๋ด๋ ํด๋์ค์ ๊ด์ ์์ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฐ์ฒด์ ๊ด์ ์ผ๋ก ์ฌ๊ณ ์ ์ค์ฌ์ ์ ํํ๋ ๊ฒ
+
+* ์ด๋ค ๊ฐ์ฒด๋ค์ด ์ด๋ค ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํ๋ ฅํ๋ ๊ฐ
+* ํด๋์ค๋ ๊ฐ์ฒด๋ค์ ํ๋ ฅ ๊ด๊ณ๋ฅผ ์ฝ๋๋ก ์ฎ๊ธฐ๋ ๋๊ตฌ์ธ ๊ตฌํ ๋งค์ปค๋์ฆ์ผ ๋ฟ์ด๋ค.
+
+> ํต์ฌ์ ์ ์ ํ ์ฑ
์์ ์ํํ๋ ์ญํ ๊ฐ์ ์ ์ฐํ๊ณ ๊ฒฌ๊ณ ํ ํ๋ ฅ ๊ด๊ณ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด๋ค. ์ค์ํ ๊ฒ์ ํด๋์ค๋ค์ ์ ์ ์ธ ๊ด๊ณ๊ฐ ์๋๋ผ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฐ์ฒด๋ค์ ๋์ ์ธ ๊ด๊ณ์ด๋ค.
+
+\
+๊ฐ์ฒด์ ์ญํ , ์ฑ
์, ํ๋ ฅ์ ์ง์คํด๋ผ!
diff --git "a/developLog/ci-cd/github-action/_ Github Action \353\247\201\355\201\254 \353\252\250\354\235\214_.md" "b/developLog/ci-cd/github-action/_ Github Action \353\247\201\355\201\254 \353\252\250\354\235\214_.md"
new file mode 100644
index 0000000..d942233
--- /dev/null
+++ "b/developLog/ci-cd/github-action/_ Github Action \353\247\201\355\201\254 \353\252\250\354\235\214_.md"
@@ -0,0 +1,3 @@
+# Github Action ๋งํฌ ๋ชจ์
+
+{% embed url="https://docs.github.com/ko/actions" %}
diff --git "a/developLog/ci-cd/github-action/_ OAuth \354\225\261\354\227\220 \353\214\200\355\225\234 \353\262\224\354\234\204 \353\260\217 gitbook\352\263\274 github_io\353\245\274 \354\236\220\353\217\231\355\231\224\353\245\274 \354\234\204\355\225\234 \354\236\221\354\227\205_.md" "b/developLog/ci-cd/github-action/_ OAuth \354\225\261\354\227\220 \353\214\200\355\225\234 \353\262\224\354\234\204 \353\260\217 gitbook\352\263\274 github_io\353\245\274 \354\236\220\353\217\231\355\231\224\353\245\274 \354\234\204\355\225\234 \354\236\221\354\227\205_.md"
new file mode 100644
index 0000000..f2b02b3
--- /dev/null
+++ "b/developLog/ci-cd/github-action/_ OAuth \354\225\261\354\227\220 \353\214\200\355\225\234 \353\262\224\354\234\204 \353\260\217 gitbook\352\263\274 github_io\353\245\274 \354\236\220\353\217\231\355\231\224\353\245\274 \354\234\204\355\225\234 \354\236\221\354\227\205_.md"
@@ -0,0 +1,462 @@
+# OAuth ์ฑ์ ๋ํ ๋ฒ์ ๋ฐ gitbook๊ณผ github.io๋ฅผ ์๋ํ๋ฅผ ์ํ ์์
+
+## Github Action์ด๋
+
+`Github action` ์ CI/CD๋ฅผ ์๋ํ์์ผ์ฃผ๋ `Github`์์ ์ ๊ณตํ๋ ์๋ํ ๋๊ตฌ์ด๋ค.
+
+ํ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ฒผ์ ๊ฒฝ์ฐ,\
+์ด๋ฅผ merge ํ ๋๋ง๋ค ๋น๋-ํ
์คํธ์ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ฐฐํฌ๊น์ง ๊ฑฐ์น๋ ๊ณผ์ ์ `Github action`์ ์ด ์ค์ํ์ง๋ง ๊ท์ฐฎ์ ๊ณผ์ ๋ค์ ์๋ํ ์์ผ์ค ์ ์๋ค!
+
+> ๋์ด์ค๊ธฐ ์์ฒญ์ด ์ด๋ฆฌ๊ฑฐ๋ ์ด์๊ฐ ์์ฑ๋๋ ๊ฒ๊ณผ ๊ฐ์ โ์ด๋ฒคํธโ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ฐ์ํ ๋ ํธ๋ฆฌ๊ฑฐ๋๋๋ก GitHub Actions โ์ํฌํ๋กโ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
+
+๊ฐ ์์
์ ์์ฒด ๊ฐ์ ๋จธ์ โ์คํ๊ธฐโ ๋๋ ์ปจํ
์ด๋ ๋ด์์ ์คํ๋๋ฉฐ, ์ ์ํ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ฑฐ๋ **์ํฌํ๋ก๋ฅผ ๊ฐ์ํํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ฅ์ธ โ์์
โ์ ์คํํ๋ โ๋จ๊ณโ๋ฅผ ํ๋ ์ด์ ํฌํจ**ํ๋ค.
+
+\+ ๊ฐ ์ํฌ ํ๋ก์ฐ๋ `.yml` ํน์ `.yaml` ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ์์ฑ๋๋ค.
+
+\+ `.github/workflows/` ์ action ํ์ผ์ ์ฌ๋ฆฌ๋ฉด Github์ด ์๋์ผ๋ก ์ธ์ํ๋ค.
+
+\+ ๋ ํฌ์งํ ๋ฆฌ์i github action์ ๋๋ฅด๋ฉด ์์์ workflows ํด๋๊ฐ ์์ฑ ๋จ
+
+### ์ํฌํ๋ก๋?
+
+**์ํฌํ๋ก**๋ ํ๋ ์ด์์ ์์
์ ์คํํ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์๋ํ๋ ํ๋ก์ธ์ค์ด๋ค. ์ํฌํ๋ก๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฒดํฌ ์ธ๋ YAML ํ์ผ์์ ์ ์๋๋ฉฐ, ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ด๋ฒคํธ๋ก ํธ๋ฆฌ๊ฑฐ๋ ๋ ์คํ๋๊ฑฐ๋ ์๋์ผ๋ก ๋๋ ์ ์๋ ์ผ์ ์ ๋ฐ๋ผ ํธ๋ฆฌ๊ฑฐ๋ ์ ์๋ค.
+
+์ํฌํ๋ก๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ `.github/workflows` ๋๋ ํฐ๋ฆฌ์ ์ ์
+
+## ์ด๊ฑธ ํ๋ ๋ฐฐ๊ฒฝ
+
+> ์ด์ .. Gitbook์ ํธ๋ํฐ์ผ๋ก ๊นจ์ง... ๊ทธ๋ฆฌ๊ณ ๋๊ธ ๋ฌ๊ธฐ ๊ธฐ๋ฅ์ด ์์ด์ ์ํต์ด ๋ถ๊ฐํจ์ ใ
ใ
ใ
์์งํ blog๋ผ๊ธฐ ๋ณด๋ค๋ notion์ ์๋ ๋ฒ์ ? ์นดํ
๊ณ ๋ฆฌ ์ ๋ ๋ฒ์ ๋๋์ด๋ผ์ github.io ๋ธ๋ก๊ทธ์ ๋ฃ์ด์ผ ํ๋๋ฐ ์ด๊ฑฐ... ํ๋ ํ๋ ๊ธ ๋ฃ์ด์ ๋ฃ๊ธฐ ๊ท์ฐฎ์..
+
+โ
git book์ ์ฅ๋จ์
+
+1. ์ฅ์
+
+* gitbook์ github repo์ ๋๊ธฐํ๊ฐ ๊ฐ๋ฅํด์ commit์ด ๋จ, ์๋์ฌ๊ธฐ ๊ฐ๋ฅ
+* url ์ปค์คํ
๊ฐ๋ฅ
+* notion์ด๋ ๋ฌ๋ฆฌ.. ์นดํ
๊ณ ๋ฆฌํ ๋ฐ workspace ์์์ ์จ๊ธด ๊ธ์ด๋ ์นดํ
๊ณ ๋ฆฌ ์ง์ ํ๋ฉด ์ธ๋ถ์์๋ ์๋ณด์ฌ์ ๊ด๋ฆฌํ๊ธฐ ์ข์
+
+2. ๋จ์
+
+* ๋ฌธ์ ํํ์ด์ง๋ผ์ ๋๊ธ ๊ธฐ๋ฅ x
+* ๋ฐฉ๋ฌธ ์ ํ์ธ์ ์ํด์๋ pro๋ก ๊ฐ์ผํจ
+* ํธ๋ํฐ์์ ๊นจ์ง... ๋ฐ์ํ์ด ์๋์ง ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๋ ์๋ณด์ฌ...
+* h3๋ ๋ชฉ์ฐจ๋ก ์ณ์ฃผ์ง๋ ์์
+
+> ๊ฒฐ๋ก ์๋ํํด์ github.io ๋ธ๋ก๊ทธ๋ก ์ฐ๋ํ๊ธฐ ์![](<../../.gitbook/assets/image (33).png>)
+
+## Github Action ์ค์ ์, Access Token์ ์ก์ธ์ค ์ ํ ๋ฒ์
+
+### Github PAT ๋ฐ๊ธ
+
+> ๋์์ ์ฆ๋ช
ํ์ฌ ๊ฐ์ธ ๋ ํฌ๋ก ํธ์ฌํ ์ ์๋ ๊ถํ์ ๊ฐ์ง **๊ฐ์ธ ํ ํฐ (PAT, Personal Access Token)**์ ๋ฐ๊ธ ๋ฐ์์ผ ํ๋ค.
+
+**<< Github PAT ๋ฐ๊ธ >>**
+
+* Github์์ ๋ก๊ทธ์ธ ํ ์ฐ์ธก ์๋จ์ ํ๋กํ ์์ด์ฝ ํด๋ฆญ
+* `โ๏ธ Settings` ํด๋ฆญ
+* ์ข์ธก ๋ฉ๋ด ์ตํ๋จ์ `<> Developer Settings` ํด๋ฆญ
+* `Personal access tokens` ํผ์ณ์ `Tokens (classic)` ํด๋ฆญ
+* `Generate new token (classic)` ํด๋ฆญ
+
+โ
ํ ํฐ ์์ฑ์ ๊ณ ๋ คํ ๊ฐ ํญ๋ชฉ
+
+* `Note`๋ ๋ณธ์ธ์ด ํ ํฐ์ ๋ถ์ฌํ ์ด๋ฆ,
+* `Expiration`์ ํ ํฐ ๋ง๋ฃ ๊ธฐํ,
+* `Select scopes`๋ ํด๋น ํ ํฐ์ ์ค ๊ถํ
+
+### ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์
+
+> ์์ฃผ ์ฐ์ด๋ ๊ฒ๋ค๋ง ์์๋ณด์
+
+1. (no scope)
+
+* ๊ณต๊ฐ ์ ๋ณด์ ๋ํ ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค(์ฌ์ฉ์ ํ๋กํ ์ ๋ณด, ๋ฆฌํฌ์งํ ๋ฆฌ ์ ๋ณด ๋ฐ gist ํฌํจ)
+
+2. repo โญ
+
+
+
+* ์ฝ๋, ์ปค๋ฐ ์ํ, ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋, ํ๋ ฅ์, ๋ฐฐํฌ ์ํ ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ์นํํฌ์ ๋ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๊ถํ์ ํฌํจํ์ฌ ํผ๋ธ๋ฆญ ๋ฐ ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๋ชจ๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
+* **์ฐธ๊ณ **: ๋ฆฌํฌ์งํ ๋ฆฌ ๊ด๋ จ ๋ฆฌ์์ค ์ธ์๋ `repo` ๋ฒ์๋ ํ๋ก์ ํธ, ์ด๋, ํ ๋ฉค๋ฒ ์๊ฒฉ ๋ฐ ์นํํฌ๋ฅผ ํฌํจํ์ฌ ์กฐ์ง ์์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ์ด ๋ฒ์๋ ์ฌ์ฉ์๊ฐ ์์ ํ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ๋ ๋ถ์ฌํฉ๋๋ค.
+
+3. repo : status
+
+* ํผ๋ธ๋ฆญ ๋ฐ ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ปค๋ฐ ์ํ์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
+* ์ด ๋ฒ์๋ ์ฝ๋์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ์ง _์๊ณ _ ๋ค๋ฅธ ์ฌ์ฉ์ ๋๋ ์๋น์ค์ ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ ์ปค๋ฐ ์ํ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐ๋ง ํ์ํฉ๋๋ค.
+
+4. repo\_deployment
+
+* ํผ๋ธ๋ฆญ ๋ฐ ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์ [๋ฐฐํฌ ์ํ](https://docs.github.com/ko/rest/repos#deployments)์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
+* ์ด ๋ฒ์๋ ์ฝ๋์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ์ง _์๊ณ _ ๋ค๋ฅธ ์ฌ์ฉ์ ๋๋ ์๋น์ค์ ๋ฐฐํฌ ์ํ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐ๋ง ํ์ํฉ๋๋ค.
+
+5. public\_repo
+
+* ํผ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ์ ํ ์ฌ๊ธฐ์๋ ํผ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฐ ์กฐ์ง์ ์ฝ๋, ์ปค๋ฐ ์ํ, ๋ฆฌํฌ์งํ ๋ฆฌ ํ๋ก์ ํธ, ํ๋ ฅ์ ๋ฐ ๋ฐฐํฌ ์ํ์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ก์ธ์ค๊ฐ ํฌํจ๋ฉ๋๋ค.
+* ํผ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณํ๋ฅผ ํ์ํ๋ ๊ฒฝ์ฐ์๋ ํ์ํฉ๋๋ค.
+
+6. repo:invite
+
+* ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ์
ํ๋ ์ด๋์ ์๋ฝ/๊ฑฐ์ ๊ธฐ๋ฅ์ ๋ถ์ฌํฉ๋๋ค. ์ด ๋ฒ์๋ ์ฝ๋์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ์ง _์๊ณ _ ๋ค๋ฅธ ์ฌ์ฉ์ ๋๋ ์๋น์ค์ ์ด๋์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐ๋ง ํ์ํฉ๋๋ค.
+
+7. security\_events
+
+* [code scanning API](https://docs.github.com/ko/rest/code-scanning)์ ๋ณด์ ์ด๋ฒคํธ์ ๋ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ก์ธ์ค๋ฅผ ๋ถ์ฌํฉ๋๋ค.
+* ์ด ๋ฒ์๋ ์ฝ๋์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ์ง _์๊ณ _ ๋ค๋ฅธ ์ฌ์ฉ์ ๋๋ ์๋น์ค์ ๋ณด์ ์ด๋ฒคํธ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐ๋ง ํ์ํฉ๋๋ค.
+
+8. workflow
+
+* GitHub Actions ์ํฌํ๋ก ํ์ผ์ ์ถ๊ฐํ๊ณ ์
๋ฐ์ดํธํ๋ ๊ธฐ๋ฅ์ ๋ถ์ฌํฉ๋๋ค.
+* ๊ฒฝ๋ก์ ๋ด์ฉ์ด ๋ชจ๋ ๋์ผํ ํ์ผ์ด ๋์ผํ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ค๋ฅธ ๋ถ๊ธฐ์ ์๋ ๊ฒฝ์ฐ ์ด ๋ฒ์ ์์ด ์ํฌํ๋ก ํ์ผ์ ์ปค๋ฐํ ์ ์์ต๋๋ค. ์ํฌํ๋ก ํ์ผ์ ๋ค๋ฅธ ๋ฒ์ ์งํฉ์ ํฌํจํ ์ ์๋ `GITHUB_TOKEN`์ ๋
ธ์ถํ ์ ์์ต๋๋ค.
+* ์์ธํ ๋ด์ฉ์ "[์๋ ํ ํฐ ์ธ์ฆ](https://docs.github.com/ko/actions/security-guides/automatic-token-authentication#permissions-for-the-github\_token)"์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
+
+## repo๋ผ๋ฆฌ ์ฐ๊ฒฐํ๊ธฐ ์ํ ํ ํฐ ๋ฐ๊ธ
+
+### **1. << Github PAT ๋ฐ๊ธ >>**
+
+> ์ด ๊ฒ์ Gitgook์ด Github.io๋ก ์ฐ๊ฒฐํด์ฃผ๊ธฐ ์ํ ํ ๊ทผ
+
+
+
+* Github์์ ๋ก๊ทธ์ธ ํ ์ฐ์ธก ์๋จ์ ํ๋กํ ์์ด์ฝ ํด๋ฆญ
+* `โ๏ธ Settings` ํด๋ฆญ
+* ์ข์ธก ๋ฉ๋ด ์ตํ๋จ์ `<> Developer Settings` ํด๋ฆญ
+* `Personal access tokens` ํผ์ณ์ `Tokens (classic)` ํด๋ฆญ
+* `Generate new token (classic)` ํด๋ฆญ
+* Note์ Expiration์ ์์์ ์์ฑํ๊ณ ,
+* `Select scopes` ์ค์ `repo`์ `workflow` ์ ํ โญ๏ธ์ค์โญ๏ธ
+* `Generate Token`
+
+### ๐ค write:package๋ ์ํ์ํ ๊น??
+
+`write:packages` ๊ถํ์ GitHub์ ํจํค์ง ๋ ์ง์คํธ๋ฆฌ(GitHub Packages)์ ํจํค์ง๋ฅผ ํธ์ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ ๋ ํ์ํฉ๋๋ค. ๋ง์ฝ ๋น์ ์ GitHub Actions ์ํฌํ๋ก์ฐ๊ฐ GitHub Packages์ ํจํค์ง๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ๊ด๋ฆฌํ๋ ์์
์ ํฌํจํ๊ณ ์๋ค๋ฉด, `write:packages` ๊ถํ์ด ํ์ํฉ๋๋ค.
+
+* **`write:packages` ๊ถํ**: ์ด ๊ถํ์ **GitHub Packages**์ ๊ด๋ จ๋ ์์
์ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Docker ์ด๋ฏธ์ง, npm ํจํค์ง, Maven ์ํฐํฉํธ ๋ฑ์ GitHub Packages์ ํธ์ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
+* **์ฌ์ฉ ์ฌ๋ก**: ๋ง์ฝ ์ํฌํ๋ก์ฐ๊ฐ ๋จ์ํ ์ฝ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ์ปค๋ฐ์ ํธ์ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ ์์
๋ง ์ํํ๊ณ , ํจํค์ง ๊ด๋ฆฌ์ ๊ด๋ จ๋ ์์
์ด ์๋ค๋ฉด, `write:packages` ๊ถํ์ ํ์ํ์ง ์์ต๋๋ค.
+
+1. ์์ ์ํฉ
+
+* **ํ์ํ์ง ์์ ๊ฒฝ์ฐ**:
+ * ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ฝ๋๋ฅผ ํธ์ํ๊ฑฐ๋ ์
๋ฐ์ดํธ๋ง ํ ๋.
+ * GitHub Packages์ ๊ด๋ จ์ด ์๋ ์์
์ ํ ๋.
+* **ํ์ํ ๊ฒฝ์ฐ**:
+ * GitHub Packages์ ํจํค์ง๋ฅผ ์
๋ก๋ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ ๋.
+ * GitHub Actions์์ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ์ด๋ฅผ GitHub Packages์ ํธ์ํ ๋.
+
+2. ๊ถํ ์ค์ :
+
+* ๋ง์ฝ ํจํค์ง ์์
์ ํ์ง ์๋๋ค๋ฉด, `repo`, `workflow`, `public_repo` ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ๊ถํ๋ง์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
+
+### 2. ํ ํฐ ์ค์
+
+> gitbook repo์ push ๋๊ฑฐ๋, ์ผ์ ์๊ฐ๋ง๋ค github.io์ ๊ธ์ ์ฐ๊ฒฐํด์ค ๊ฑฐ์
+
+
+
+### 3. Gitbook repo, Github.io repo์ PAT ๋ฑ๋ก โญ
+
+`Github action` ํ์ผ์ ๊ฐ์ธ ๋ ํฌ๋ก ๋ณ๊ฒฝ์ฌํญ์ `push`ํ ์ ์๋๋ก ํ๋ ค๋ฉด\
+์์์ ๋ฐ๊ธ ๋ฐ์ ๊ฐ์ธ ํ ํฐ์ ํจ๊ป ๋ณด๋ด ๋ด ๋ ํฌ์ `push`ํ ๊ถํ์ ๋ฐ์ ์ฌ๋์์ ์ฆ๋ช
ํ๊ธฐ ์ํจ
+
+
+
+
+
+* GITBOOK , Github.io๋ ํฌ์ `โ๏ธ Settings` ํด๋ฆญ
+* `โ Secrets and variables`๋ฅผ ํผ์ณ `Actions` ํด๋ฆญ
+* `New repository secret` ํด๋ฆญ
+* `Name`์๋ `.yml` ํ์ผ์์ ์ฌ์ฉํ ์ด๋ฆ, `Value`์๋ ์๊น ๋ฐ๊ธ๋ฐ์ PAT ์์ฑ
+* `Add Secret` ํด๋ฆญ
+
+## workflow ์์ฑํ๊ธฐ
+
+์ํฌํ๋ก์ฐ์ ์์
ํด์ผ ํ ๊ฒ์ ํฐ ํ์
+
+> gitbook์ ์๋ md ํ์ผ์ github.io์ `_posts`์ ๋ฃ์ด์ผ ํจ
+
+
+
+### gitbook ์ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๋ฌธ์ ๊ฐ ์๋๋ฐ
+
+1. gitbook์ ํ๊ธ์ ์ ์ฅํ์ง ๋ชปํ๋๋ผ?
+2. ๊ทธ๋์ ํ๊ธ๋ก ๋ ํ์ดํ์ ๊ฒฝ์ฐ, github repo์ ์ ์ฅ ์, undefinded๋ก ์ ์ฅ๋จ
+
+
+
+3. md ํ์ผ ์ฝ๋ ์์๋ ์ ๋ค์ด๊ฐ์ง
+
+* gitbook์ด ## ๊น์ง๋ง ๋ชฉ์ฐจ๋ก ๋ง๋ค์ด์ฃผ๋๋ฐ ๊ทธ ์ด์ ๊ฐ ์ฐ๋ฆฌ๊ฐ gitbook์์ ##๋ก ๋ชฉ์ฐจ๋ฅผ ํ๋ฉด ### ๋ก #๋ก ํ๋ฉด ##๋ก # ์ ํ๋์ฉ ๋ ๋ถ์ฌ์ง๋ ๊ผด์
+* ์ฆ, ์ ๋ชฉ์ด # ํ๊ฒ h1์ => ์ด๊ฑธ github io์ ๋์ด๊ฐ๊ธฐ ์ workflow์์ ๋ณ๊ฒฝํด์ค์ผ ํจ push๊ฐ ๋ค์ด์ฌ ๋ ๋ณ๊ฒฝ์ ํ๋ ์๋๋ฉด ์ผ์ ์๊ฐ๋ง๋ค ๋ณ๊ฒฝ์ ํ๋์ง
+
+### ์ฆ, workflow์์ ์์
ํด์ผ ํ ๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด๋ฉด
+
+1. gitbook ์ปค๋ฐ ์, ํ์ผ ์ด๋ฆ์ ๋ค ๋ฐ๊ฟ์ค์ผ ํจ... mdํ์ผ ์์ ์๋ h1์ผ๋ก
+2. gitbook์ github.io๋ก ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ์ ธ์ฌ ๊ฑด๋ฐ, md ํ์ผ๋ค์ ์ฐพ์์ผ ํจ(main ๋ธ๋์น์ `checkout`)
+3. developLog > ์๋ ๊ฒ๋ค ์ค ์๋ ๋๊ฐ๋ฅผ ์ ์ธํ๊ณ ์ ๋ถ ๊ฐ์ ธ์ค๊ณ ๊ทธ ์ดํ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๋๋ง ๊ฐ์ ธ์ฌ ๊ฑฐ์
+
+
+
+4. **ํด๋**๋ฅผ `์นดํ
๊ณ ๋ฆฌ`๋ก ๋ถ๋ฅ ํ ๊ฑฐ์
+5. mdํ์ผ์ ์์ ํด์ค์ผ ํจ ๋์ด ์ด์ง ๋ฌ๋ผ์ gitbook์์ ๋ณด๋ผ ๋ ์นดํ
๊ณ ๋ฆฌ, ๋ฐ๊ธ๋ ์ง, ํ์ดํ ๋ฑ์ mdํ์ผ ์์ ๋ฃ์ด์ค์ผ ํจ
+
+โ
gitbook์ ๊ฒฝ์ฐ, github.io์ ์ฐ๋์ด ์๋๊ธฐ์ md ํ์ผ ์์ ์๋ ์๋จ์ ์๋ --- --- ์์ญ์ธ ๋ถ๋ถ์ ์ญ์ ์์ผ์ค์ผํจ
+
+โ
๊ทธ๋ฆฌ๊ณ github.io์ ๋ง์ถฐ ์์ ๋ด์ฉ ์์ ์ฌ์ง๊ณผ ๊ฐ์ด ํด์ค์ผ ํจ
+
+* title : ํ์ผ ์ ๋ชฉ์ผ๋ก ๊ฐ์ ธ์ด
+* description : ์ gitbook์ด๋ ๋๊ฐ์ด ์์ผ๋ฉด ๋ค์ด๊ฐ์ง ์๊ฒ
+* author : ๋ฌด์กฐ๊ฑด mellona
+* date : commitํ ๋ ์ง์ ์๊ฐ์ผ๋ก
+* pin : ๊ธฐ๋ณธ๊ฐ fasle
+* mermaid : ๊ธฐ๋ณธ๊ฐ true
+* image: gitbook cover๋ก ํด์ ๊ฐ์ ธ์ด ๊ธฐ๋ณธ๊ฐ์ ์์ .gitbook/assets/DALLยทE 2024-08-12 14.38.23 - A blog banner designed with a minimalist winter theme, featuring a snow-covered landscape with a trail of footsteps leading through the snow. The desi.webp
+
+
+
+โ
ํ์ดํ๋ ๊ทธ๊ฒ์ ๋ง๊ฒ ๋ฐ๊ฟ์ค์ผ ํจ ํ์ดํ : ๋
๋-์-์ผ ํ์ผ์ ๋ชฉ
+
+6. ๋ชจ๋ ์์
์ด ๋๋ฌ๋ค๋ฉด, github.io \_posts์ `push` ํด์ค๋ค. - checkout ํ์
+
+### workspace ์๋ํ๋ฅผ ์ํ ์คํฌ๋ฆฝํธ
+
+> ๐ ์ฐธ๊ณ : [github action์ ์ํฌํ๋ก์ฐ ๊ตฌ๋ฌธ](https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob\_idneeds)
+
+์์ 1, 2์ gitbook repo์ ํธ์๋ ๋ ์ฌ์ฉํ๊ธฐ ์ํด **Gitbook title rename.yml**์ผ๋ก
+
+๋ค์ 3, 4, 5, 6์ github.io repo์ ๋์ด๊ฐ ๋ ์์
์ผ๋ก **Convert and Deploy DevelopLog to Jekyll.ym**l๋ก ์์
ํด์ผ ๊ฒ ๋ค.
+
+
+
+1. Gitbook title rename์ dev ๋ธ๋์น์ ๋จผ์ ํด์ฃผ๊ธฐ ์ํด **Rename and Commit Markdown Files.yml**์ ๋ง๋ค์ด์ฃผ๊ณ ์๋์ ์คํฌ๋ฆฝํธ ์์ฑ
+
+```
+name: Rename and Commit Markdown Files
+
+on:
+ push:
+ branches:
+ - dev # dev ๋ธ๋์น์ ํธ์๋ ๋ ์ํฌํ๋ก์ฐ ํธ๋ฆฌ๊ฑฐ
+ workflow_dispatch: # ์๋์ผ๋ก ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ ์ ์๋ ์ต์
+
+jobs:
+ process-markdown:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Rename Markdown files
+ run: |
+ for file in developLog/*.md; do
+ title=$(grep -m 1 '^# ' "$file" | sed 's/^# //')
+ if [ -n "$title" ]; then
+ new_filename="developLog/${title// /_}.md"
+ mv "$file" "$new_filename"
+ fi
+ done
+
+ - name: Commit changes
+ run: |
+ git config --local user.email "your-email@example.com"
+ git config --local user.name "Your Name"
+ git add .
+ git commit -m "Rename Markdown files based on h1 titles"
+ git push origin dev # ๋ณ๊ฒฝ์ฌํญ์ dev ๋ธ๋์น๋ก ํธ์
+
+```
+
+โ
ํ์ดํ๋ ๊ทธ๊ฒ์ ๋ง๊ฒ ๋ฐ๊ฟ์ค์ผ ํจ ํ์ดํ : ๋
๋-์-์ผ ํ์ผ์ ๋ชฉ ๋ชจ๋ ์์
์ด ๋๋ฌ๋ค๋ฉด, github.io \_posts์ push ํด์ค๋ค. - checkout ํ์ workspace ์๋ํ๋ฅผ ์ํ ์คํฌ๋ฆฝํธ
+
+๐ ์ฐธ๊ณ : github action์ ์ํฌํ๋ก์ฐ ๊ตฌ๋ฌธ ์์ 1, 2์ gitbook repo์ ํธ์๋ ๋ ์ฌ์ฉํ๊ธฐ ์ํด Gitbook title rename.yml์ผ๋ก ๋ค์ 3, 4, 5, 6์ github.io repo์ ๋์ด๊ฐ ๋ ์์
์ผ๋ก Convert and Deploy DevelopLog to Jekyll.yml๋ก ์์
ํด์ผ ๊ฒ ๋ค.
+
+ํ๊ธ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ ์ํ ์์
.. gpt์ ๋์์ ๋ฐ์์ต๋๋ค... + ๋ฌธ์ Gitbook title rename์ dev ๋ธ๋์น์ ๋จผ์ ํด์ฃผ๊ธฐ ์ํด Rename and Commit Markdown Files.yml์ ๋ง๋ค์ด์ฃผ๊ณ ์๋์ ์คํฌ๋ฆฝํธ ์์ฑ name: Rename and Commit Markdown Files
+
+on: push: branches: - dev # dev ๋ธ๋์น์ ํธ์๋ ๋ ์ํฌํ๋ก์ฐ ํธ๋ฆฌ๊ฑฐ workflow\_dispatch: # ์๋์ผ๋ก ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ ์ ์๋ ์ต์
+
+jobs: process-markdown: runs-on: ubuntu-latest
+
+```
+steps:
+- name: Checkout repository
+ uses: actions/checkout@v4
+
+- name: Rename Markdown files
+ run: |
+ for file in developLog/*.md; do
+ title=$(grep -m 1 '^# ' "$file" | sed 's/^# //')
+ if [ -n "$title" ]; then
+ new_filename="developLog/${title// /_}.md"
+ mv "$file" "$new_filename"
+ fi
+ done
+
+- name: Commit changes
+ run: |
+ git config --local user.email "your-email@example.com"
+ git config --local user.name "Your Name"
+ git add .
+ git commit -m "Rename Markdown files based on h1 titles"
+ git push origin dev # ๋ณ๊ฒฝ์ฌํญ์ dev ๋ธ๋์น๋ก ํธ์
+```
+
+๐ฅ ๋ฌธ์ : push๊ฐ main ๋ธ๋์น์ ๋๋ฉด์, ์คํฌ๋ฆฝํธ ์คํ ์๋จ
+
+โ
gitbook push ์์ฒด๊ฐ ๋ฌด์กฐ๊ฑด main์ผ๋ก ๋ผ์ ๊ทธ๋ฅ ์ผ๋จ, main์ผ๋ก ๋ฐ๊พธ๊ธฐ๋ก ํจ
+
+
+
+๐ฅ ์ดํ์ ๋ฌธ์ ๋ ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ ์ด๋ฏธ ๊ทธ๋ ๊ฒ h1์ ์ด๋ฆ์ผ๋ก ๋์ด ์๋ ๊ฒ๋ค๋ ์๋ค๋ ๊ฒ์ด ์ด๋ฏธ ์กด์ฌํ๋ ํ์ผ ์ด๋ฆ๊ณผ ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ ๋ฐ์
+
+โ
ํ์ผ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์๋์ง ํ์ธํ๊ณ , ์ด๋ฏธ ๋์ผํ ์ด๋ฆ์ด๋ผ๋ฉด mv ๋ช
๋ น์ ๊ฑด๋๋ฐ๋๋ก ์์ ํ ์ ์๋ค. name: Rename and Commit Markdown Files
+
+on: push: branches: - main # main ๋ธ๋์น์ ํธ์๋ ๋ ์ํฌํ๋ก์ฐ ํธ๋ฆฌ๊ฑฐ workflow\_dispatch: # ์๋์ผ๋ก ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ ์ ์๋ ์ต์
+
+jobs: process-markdown: runs-on: ubuntu-latest # ์ต์ Ubuntu ํ๊ฒฝ์์ ์คํ
+
+```
+steps:
+- name: Checkout repository
+ uses: actions/checkout@v4 # ๋ ํฌ์งํ ๋ฆฌ์ ์์ค ์ฝ๋๋ฅผ ์ฒดํฌ์์
+
+- name: Rename Markdown files
+ run: |
+ for file in developLog/*.md; do
+ # ์ฒซ ๋ฒ์งธ H1 ์ ๋ชฉ์ ์ถ์ถํ์ฌ ์ ๋ชฉ์ผ๋ก ์ฌ์ฉ
+ title=$(grep -m 1 '^# ' "$file" | sed 's/^# //')
+
+ if [ -n "$title" ]; then
+ # ์ ํ์ผ๋ช
์ ์ ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ, ๊ณต๋ฐฑ์ ๋ฐ์ค(_)๋ก ๋์ฒด
+ new_filename="developLog/${title// /_}.md"
+
+ # ํ์ผ ์ด๋ฆ์ด ๋์ผํ ๊ฒฝ์ฐ์๋ mv ๋ช
๋ น์ ๊ฑด๋๋๋๋ค
+ if [ "$file" != "$new_filename" ]; then
+ mv "$file" "$new_filename"
+ fi
+ fi
+ done
+
+- name: Commit changes
+ run: |
+ # Git ์ฌ์ฉ์ ์ ๋ณด ์ค์
+ git config --local user.email "your-email@example.com"
+ git config --local user.name "Your Name"
+ # ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ถ๊ฐํ๊ณ ์ปค๋ฐ
+ git add .
+ git commit -m "Rename Markdown files based on h1 titles"
+ # ๋ณ๊ฒฝ์ฌํญ์ ์๊ฒฉ ์ ์ฅ์์ main ๋ธ๋์น๋ก ํธ์
+ git push origin main
+```
+
+ํ์ง๋ง, ์ด ๋ํ ๋ฌธ์ ๊ฐ ๋๋๋ฐ... ๐ฅ ๋ฐ๋ ๊ฒ์ด ์๋ค๊ณ ์๊พธ ๋ธ
+
+
+
+โ
add -A๋ก ์ ์ฒด๋ก ํด์ฃผ๊ณ ๊ทธ๋ฆฌ๊ณ ํ ํฐ์ ์ด์ฉํด์ github action ๋ด์ด ๋ฃ๊ฒ ์์
+
+## ์ผ๋ถ ์ฝ๋
+
+```
+ git add -A # ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ์ถ๊ฐ
+ git config --global user.name 'github-actions[bot]'
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
+ git diff --staged --quiet || git commit -m "Rename Markdown files based on h1 titles"
+ git push https://${{ secrets.GH_PAT }}@github.com/GoldenPearls/gitBook.git # ๋ณ๊ฒฝ์ฌํญ์ main ๋ธ๋์น๋ก ํธ์
+```
+
+ ๐ฅ ์คํ์ ๋๋๋ฐ ํ์ผ์ด ๋ฐ๋์ง ์์..
+
+
+
+โ
ํ๊ธ ์ธ์ฝ๋ฉ ์์
์ํ
+
+* name: Set UTF-8 Encoding run: | export LC\_CTYPE="UTF-8" # UTF-8 ์ธ์ฝ๋ฉ์ ๋ช
์์ ์ผ๋ก ์ค์
+
+๐ฅ mv ๋ช
๋ น์ด๋ก ํ์ผ์ ์ด๋ํ๋ ค๊ณ ํ ๋, ์ ํ์ผ ์ด๋ฆ์ ํฌํจ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ํจ
+
+
+
+โ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, ์ด๋ํ ๊ฒฝ๋ก์ ํด๋นํ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ก์ง์ ์ถ๊ฐํด์ผ ํ๋ค.
+
+
+
+![](https://velog.velcdn.com/images/prettylee620/post/037def8c-e24e-4b88-a445-c1721ac892d2/image.png)
+
+ํด๊ฒฐ!!!!! ใ
ใ
ใ
ใ
ใ
40๋ถ์ ์ฝ์ง ๋์ ์๋ฐ๋์๋ค.. ํํ.. ์ค ์์์ผ๋... ์นดํ
๊ณ ๋ฆฌ๊ฐ ์ฝํ๋ ํ์์ด ๋์ด...
+
+```
+name: Rename and Commit Markdown Files
+
+on:
+ push:
+ branches:
+ - main # main ๋ธ๋์น์ ํธ์๋ ๋ ์ํฌํ๋ก์ฐ ํธ๋ฆฌ๊ฑฐ
+ workflow_dispatch: # ์๋์ผ๋ก ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ ์ ์๋ ์ต์
+
+jobs:
+ process-markdown:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ token: ${{ secrets.GITBOOKKEY }}
+ fetch-depth: 0
+ ref: main
+
+ - name: Set UTF-8 Encoding
+ run: |
+ export LC_CTYPE="UTF-8" # UTF-8 ์ธ์ฝ๋ฉ์ ๋ช
์์ ์ผ๋ก ์ค์
+
+ - name: Rename and Update Markdown files
+ run: |
+ for file in $(find developLog -type f -name '*.md'); do
+ # ํ์ผ ๋ด์ฉ์ ์ฒซ ๋ฒ์งธ ์ ๋ชฉ ์ค์ ์ถ์ถ
+ title=$(grep -m 1 '^#' "$file" | sed 's/^# //')
+
+ if [ -n "$title" ]; then
+ # ํ์ผ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉด์ ์ ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ์ผ๋ช
์์ฑ
+ dir=$(dirname "$file")
+ new_filename="$dir/$title.md"
+
+ # ๋์ ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด ์์ฑ
+ new_dir=$(dirname "$new_filename")
+ mkdir -p "$new_dir"
+
+ # ํ์ผ ์ด๋ฆ์ด ๋์ผํ ๊ฒฝ์ฐ์๋ ๊ฐ์ ๋ก ์
๋ฐ์ดํธ
+ if [ "$file" != "$new_filename" ]; then
+ echo "Renaming $file to $new_filename"
+ mv "$file" "$new_filename"
+ else
+ echo "Updating timestamp for $file"
+ touch "$file" # ํ์ผ์ ํ์์คํฌํ๋ฅผ ์
๋ฐ์ดํธ
+ fi
+ else
+ echo "No valid title found in $file, skipping."
+ fi
+ done
+
+ - name: Commit changes
+ run: |
+ git add -A # ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ์ถ๊ฐ
+ git config --global user.name 'github-actions[bot]'
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
+ git diff --staged --quiet || git commit -m "Rename and update Markdown files based on h1 titles"
+ git push https://${{ secrets.GH_PAT }}@github.com/GoldenPearls/gitBook.git # ๋ณ๊ฒฝ์ฌํญ์ main ๋ธ๋์น๋ก ํธ์
+
+```
+
+
+
+## TMI
+
+GITHUB Action์ด ํธํ๊ธฐ๋ ํ๋ค ์ ๋ชฐ๋ผ์... ํ ๋๋ง๋ค ๊ณต๋ถํด์ผ ํ ๋ฏ ใ
ใ
ใ
ใ
ใ
ใ
ใ
ใ
๋๋ฌด ๋ง๊ธฐ๋ ํ๊ณ ... ํ์ง๋ง ์๋ํ ์ต๊ณ
+
+
+
+> ๐ ์ฐธ๊ณ
+>
+> * [Github action์ผ๋ก Sync Fork ์๋ํํ๊ธฐ - push ๋ ๋๋ง๋ค](https://velog.io/@charming-l/Github-action%EC%9C%BC%EB%A1%9C-push-%EB%90%A0-%EB%95%8C%EB%A7%88%EB%8B%A4-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EC%B5%9C%EC%8B%A0%ED%99%94%ED%95%98%EA%B8%B0to-forked-repo)
+> * [GitAction์์ ๋ค๋ฅธ ๋ ํฌ๋ก ์ ๊ทผํ๋ ค๋ฉด?](https://stackoverflow.com/questions/71068476/accessing-another-repository-with-github-cli-in-github-actions)
+> * [GitHub Organization ํ๋ก์ ํธ๋ฅผ vercel ๋ฌด๋ฃ๋ก ์ฐ๋ํ๊ธฐ (+git actions)](https://velog.io/@rmaomina/organization-vercel-hobby-deploy)
+
diff --git "a/developLog/ci-cd/github/_ Git\354\227\220\354\204\234 \354\225\214\352\262\214 \353\220\234 \354\247\200\354\213\235_.md" "b/developLog/ci-cd/github/_ Git\354\227\220\354\204\234 \354\225\214\352\262\214 \353\220\234 \354\247\200\354\213\235_.md"
new file mode 100644
index 0000000..cf22ab8
--- /dev/null
+++ "b/developLog/ci-cd/github/_ Git\354\227\220\354\204\234 \354\225\214\352\262\214 \353\220\234 \354\247\200\354\213\235_.md"
@@ -0,0 +1,34 @@
+---
+description: Git์์ ์๊ฒ ๋ ์ง์์ ํ ๋์
+icon: git
+---
+
+# Git์์ ์๊ฒ ๋ ์ง์
+
+## 1. Git tree์ ๋ํด์
+
+> ์ถ์ฒ : [Github action์ผ๋ก Sync Fork ์๋ํํ๊ธฐ - push ๋ ๋๋ง๋ค](https://velog.io/@charming-l/Github-action%EC%9C%BC%EB%A1%9C-push-%EB%90%A0-%EB%95%8C%EB%A7%88%EB%8B%A4-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EC%B5%9C%EC%8B%A0%ED%99%94%ED%95%98%EA%B8%B0to-forked-repo)
+
+์ฒ์์๋ _"๊ฐ์ ์ปค๋ฐํด์๋ก `push`ํ๋ค"_, _"`Git tree`๋ฅผ ๊ฐ๊ฒ ํ๋ค"_ ๋ ํ์์ ๋ง์ด ์ ์ดํด๊ฐ ๊ฐ์ง ์์๊ณ , ๋๋ถ์ Git์ ๊ตฌ์กฐ๋ฅผ ๋ค์ ํ๋ฒ ๊ณต๋ถํ๊ฒ ๋๋ ์ข์ ๊ณ๊ธฐ๊ฐ ๋์๋ค.
+
+Git์ ๊ฐ ์ํ๋ค์ ์ค๋
์ท์ ํด์๊ฐ์ผ๋ก ๊ตฌ๋ถํ๊ณ (`commit`), ์ด๋ค์ ์ฐ๊ฒฐํ์ฌ ํ๋์ ๊ฑฐ๋ํ tree๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ด๊ฒ history, ์ฆ `Git tree`๊ฐ ๋๋ ๊ฒ์ด๋ค. Git์ ๊ฐ ์ปค๋ฐ๋ค์ ์ด ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋ชจ๋ ์ปค๋ฐ์ ๋ถ๋ชจ ์ปค๋ฐ์ ํฌ์ธํฐ๋ฅผ ํจ๊ป ๊ฐ์ง๊ณ ์๋ค. ์ ๋งํฌ์์๋ ์๋ก ๋ค๋ฅธ ๋ถ๋ชจ๋ฅผ ๊ฐ๋ฆฌํค๋ ์ปค๋ฐ์ ๊ฐ์ ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Orgin repo์ forked repo๋ ์๋ก ๋ค๋ฅธ ์ปค๋ฐ ํด์๋ฅผ ๊ฐ๊ฒ ๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ ๊ฐ์ธ ๋ ํฌ๋ฅผ remote url์ ๋ฑ๋กํ์ฌ ์ปค๋ฐ ๋ด์ญ์ ๊ฐ์ ธ์ Origin repo์ ์ต๊ทผ ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐ์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐํ๋ฏ๋ก ๋์ผํ `Git tree`๋ฅผ ๊ฐ๊ฒ ๋๋ค.
+
+๊ณผ์ ์ด ์ ์ดํด๊ฐ ์๊ฐ๋ ์ฒซ ์๋๋ก๋ ๋ฌด์์ ๋ ๋ ํฌ์ ๋ณ๊ฒฝ ์ฌํญ์ merge ํด์, ์ ๋ ํฌ์ ๋ค์ pushํ๋ฉด ๋๋? ์ถ์๋ค. ํ์ง๋ง ์ฒดํฌ์์์์ ํ ํฐ์ ๋ฃ์ด์ฃผ์ง ์์ผ๋ merge ํ ์ ์๋ค๋ ์๋ฌ๊ฐ ๋ด๋ค...\
+๋๋ถ์ ์๋ก ๋ค๋ฅธ ๋ ํฌ๋ผ๋ฆฌ ๋ณํฉ์ ์ฌ์ฉํ ์ ์๋ `--allow-unrelated-histories` ๋ผ๋ `git merge` ์ต์
๋ ์๊ฒ ๋์์ง๋ง ์ดํ์ Merge conflict๊ฐ ๋ฐ์ํ๋ค๋ ์๋ฌ๋ก ์ด์ด์ก๋ค. ํ ๋ ํฌ ๊ธฐ์ค์ผ๋ก ํด์ผํ๋๊น ์ถฉ๋์ด ๋ฐ์ํ๋ค๋ฉด ์ฐ๋ฆฌ ๋ ํฌ๋ก ์ง์ ํด์ฃผ๋ `-Xours`๋ผ๋ ์ต์
๊น์ง ํ๋ ๋ ๋ฐฐ์๊ฐ ์ ์์๋ค..
+
+
+
+### ์ ๋ฆฌํ์๋ฉด,
+
+1. **Git์ ๊ตฌ์กฐ ์ดํด**:
+ * Git์ ์ํ๋ฅผ ์ค๋
์ท์ผ๋ก ์ ์ฅํ๊ณ , ์ด ์ค๋
์ท๋ค์ ๊ณ ์ ์ ํด์ ๊ฐ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
+ * ๊ฐ ์ปค๋ฐ์ ๋ถ๋ชจ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด ํฌ์ธํฐ๋ค์ด ์ฐ๊ฒฐ๋์ด Git ํธ๋ฆฌ๋ฅผ ํ์ฑํฉ๋๋ค.
+ * Git ํธ๋ฆฌ๋ ์ด ์ปค๋ฐ๋ค์ ์ฐ๊ฒฐ๋ ํ์คํ ๋ฆฌ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
+2. **Git ํธ๋ฆฌ์ ์ปค๋ฐ ํด์**:
+ * Git์์ ๊ฐ ์ปค๋ฐ์ ๊ณ ์ ํ ํด์ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ์ด ํด์๋ ์ปค๋ฐ์ ๋ด์ฉ๊ณผ ๋ถ๋ชจ ์ปค๋ฐ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๋์ผํ ๋ด์ฉ์ ์ปค๋ฐ์ด๋ผ๋ ๋ถ๋ชจ ์ปค๋ฐ์ด ๋ค๋ฅด๋ฉด ํด์ ๊ฐ์ด ๋ฌ๋ผ์ง๋๋ค. ๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ์ ์ฅ์์์ ๋์ผํ ๋ด์ฉ์ ์ปค๋ฐํ๋๋ผ๋ ๋ถ๋ชจ ์ปค๋ฐ์ด ๋ค๋ฅด๋ฉด ์๋ก ๋ค๋ฅธ ํด์ ๊ฐ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
+ * ๋ ์ ์ฅ์๊ฐ ๋์ผํ Git ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๋ ค๋ฉด, ์ปค๋ฐ ๋ด์ญ์ ๋๊ธฐํํ์ฌ ๋์ผํ ์ปค๋ฐ ํด์๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
+3. **`--allow-unrelated-histories` ์ต์
**:
+ * ์ด ์ต์
์ ์๋ก ๋ค๋ฅธ Git ํ์คํ ๋ฆฌ๋ฅผ ๊ฐ์ง ๋ ์ ์ฅ์๋ฅผ ๋ณํฉํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Git์ ์๋ก ๊ด๋ จ ์๋ ํ์คํ ๋ฆฌ๋ฅผ ๋ณํฉํ ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๊ณ ๋ณํฉ์ ๋ง์ต๋๋ค. ์ด ์ต์
์ ์ฌ์ฉํ๋ฉด ์ด ์ ํ์ ๋ฌด์ํ๊ณ ๋ณํฉ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
+4. **Merge ์ถฉ๋ ํด๊ฒฐ**:
+ * ๋ณํฉ ์ ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ฒ์ ๋ ์ ์ฅ์๊ฐ ๋์ผํ ํ์ผ์ ๋ค๋ฅด๊ฒ ์์ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ `-Xours` ์ต์
์ ์ฌ์ฉํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ ํ์ผ์ ๋ํด ํ์ฌ ์ฒดํฌ์์๋ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฐ์ ์ํ์ฌ ์ถฉ๋์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
+ * ์ด ์ต์
์ ์ถฉ๋ ํด๊ฒฐ์ ํ ๋ฐฉ๋ฒ์ด์ง๋ง, ํญ์ ๋ชจ๋ ์ํฉ์ ์ ํฉํ์ง ์์ ์ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
diff --git "a/developLog/ci-cd/github/_ github \354\236\220\354\243\274 \354\223\260\353\212\224 \353\252\205\353\240\271\354\226\264_.md" "b/developLog/ci-cd/github/_ github \354\236\220\354\243\274 \354\223\260\353\212\224 \353\252\205\353\240\271\354\226\264_.md"
new file mode 100644
index 0000000..8ee5bb9
--- /dev/null
+++ "b/developLog/ci-cd/github/_ github \354\236\220\354\243\274 \354\223\260\353\212\224 \353\252\205\353\240\271\354\226\264_.md"
@@ -0,0 +1,98 @@
+---
+description: github ์์ฃผ ์ฐ๋ ๋ช
๋ น์ด ๋ชจ์๋ณด๊ธฐ
+icon: git
+layout:
+ title:
+ visible: true
+ description:
+ visible: true
+ tableOfContents:
+ visible: true
+ outline:
+ visible: true
+ pagination:
+ visible: false
+---
+
+# github ์์ฃผ ์ฐ๋ ๋ช
๋ น์ด
+
+## 1. ๋ก์ปฌ ์ ์ฅ์์ ์๊ฒฉ ์ ์ฅ์ ๋ง์ถ๊ธฐ
+
+> `git reset --hard` ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ปค๋ฐ์ผ๋ก ๋๋๋ ธ์ ๋, ๋ก์ปฌ ์ ์ฅ์๋ ๊ทธ ์ปค๋ฐ ์ดํ์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ ๋ก์ปฌ ์ ์ฅ์์ ์๊ฒฉ ์ ์ฅ์์ ์ํ๊ฐ ๋ถ์ผ์นํ๊ฒ ๋๋ฉฐ, ์ด๋ฅผ ๋ง์ถ๊ธฐ ์ํด ๊ฐ์ ๋ก ํธ์ํด์ผ ํฉ๋๋ค.
+
+1. **`git reset --hard` ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ปค๋ฐ์ผ๋ก ๋๋๋ฆผ**
+
+ ์ด๋ฏธ ์คํํ ๋ช
๋ น์ด์
๋๋ค:
+
+ ```bash
+ git reset --hard 6bec4114ed3cfd83858aa59311ca0ac9813d6c18
+ ```
+
+ ์ด ๋ช
๋ น์ด๋ ๋ก์ปฌ ์ ์ฅ์๋ฅผ `6bec4114ed3cfd83858aa59311ca0ac9813d6c18` ์ปค๋ฐ์ผ๋ก ๋๋๋ฆฝ๋๋ค.
+2. **์๊ฒฉ ์ ์ฅ์์ ๊ฐ์ ๋ก ํธ์**
+
+ ๋ก์ปฌ ์ ์ฅ์๋ฅผ ์๊ฒฉ ์ ์ฅ์์ ๋ง์ถ๊ธฐ ์ํด ๊ฐ์ ๋ก ํธ์ํด์ผ ํฉ๋๋ค. ์ด๋ ์๊ฒฉ ์ ์ฅ์์ ํ์คํ ๋ฆฌ๋ฅผ ๋ฎ์ด์ฐ๋ ๊ฒ์ด๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
+
+ ```bash
+ git push origin main --force
+ ```
+
+ ์ฌ๊ธฐ์ `main`์ ํ์ฌ ์ฌ์ฉ ์ค์ธ ๋ธ๋์น ์ด๋ฆ์
๋๋ค. ๋ง์ฝ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ํด๋น ๋ธ๋์น ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
+
+### ์ฃผ์์ฌํญ
+
+* **๊ฐ์ ํธ์ (`--force`)**: ์๊ฒฉ ์ ์ฅ์์ ํ์คํ ๋ฆฌ๊ฐ ๋ฎ์ด์จ์ง๊ธฐ ๋๋ฌธ์, ์ด ์์
์ ์ ์คํ๊ฒ ์ํํด์ผ ํฉ๋๋ค. ํนํ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ์ ์ฅ์๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด, ๊ทธ๋ค์๊ฒ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
+* **ํ์คํ ๋ฆฌ ์์ค**: ์ด ์์
์ ์ํํ๋ฉด ๋๋๋ฆฐ ์ดํ์ ๋ชจ๋ ์ปค๋ฐ์ด ํ์คํ ๋ฆฌ์์ ์ฌ๋ผ์ง๋ฏ๋ก, ํ์ํ ๊ฒฝ์ฐ ๋ฐฑ์
์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
+
+### ์ ์ฒด์ ์ธ ์ ์ฐจ ์์ฝ
+
+1. **๋ก์ปฌ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ**: `git reset --hard `
+2. **์๊ฒฉ ์ ์ฅ์์ ๊ฐ์ ํธ์**: `git push origin --force`
+
+์ด ์์
์ ํตํด ๋ก์ปฌ๊ณผ ์๊ฒฉ ์ ์ฅ์์ ์ํ๋ฅผ ์ผ์น์ํฌ ์ ์์ต๋๋ค.
+
+
+
+## 2. Forkํ ๋ ํฌ์งํ ๋ฆฌ commit ๊ธฐ๋ก ๋จ๊ธฐ๊ธฐ ์ํ ์์
+
+> ์ฐธ๊ณ : [https://soranhan.tistory.com/11](https://soranhan.tistory.com/11)
+
+1. **์ผ๋จ ๋ด github์ ์๋ก์ด ๋ ํ์งํ ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.**
+2. **terminal์ ์ฐ๋ค.**
+3. **๋ณต์ฌํ๊ณ ์ ํ๋ repository๋ฅผ bare cloneํ๋ค.**
+
+```
+$ git clone --bare https://github.com/exampleuser/old-repository.git
+```
+
+4. **์๋ก์ด ๋ ํ์งํ ๋ฆฌ๋ก Mirror-push**
+
+```
+$ cd old-repository.git
+$ git push --mirror https://github.com/exampleuser/new-repository.git
+```
+
+5. **์ฒ์์ ์์๋ก ์์ฑํ๋ local repository๋ฅผ ์ญ์ **
+
+```
+$ cd ..
+$ rm -rf old-repository.git
+```
+
+6. ๋ค๋ง ์ด๊ฒ ๊ฐ๋ ์๋๋ ๊ฒ ์๋๋ฐ ๊ทธ ์ด์ ๋ `๊ถํ` ๋๋ฌธ์ด๊ธฐ์ ํ ํฐ์ ๋ง๋ค์ด์ฃผ๊ณ ๊ทธ๊ฑธ๋ก ์ฌ์ฉํด์ผ ํจ
+
+> GitHub Personal Access Token ์์ฑ
+>
+> 1. GitHub ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํฉ๋๋ค.
+> 2. [GitHub์ Personal Access Token ์์ฑ ํ์ด์ง](https://github.com/settings/tokens)๋ก ์ด๋ํฉ๋๋ค.
+> 3. "Generate new token" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
+> 4. **๊ถํ(Scopes)**์์ `repo`, `workflow`, `admin:repo_hook` ๊ถํ์ ์ ํํฉ๋๋ค. ์ด ํ ํฐ์ ์ ์ฅ์์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ ๊ฐ์ง๋๋ค.
+> 5. ์์ฑ๋ ํ ํฐ์ ๋ณต์ฌํด๋ก๋๋ค. ์ด ํ ํฐ์ ๋์ค์ ์ฌ์ฉํ ๊ฒ์
๋๋ค.
+> 6. ๊ฐ์ธ์ํ์ด์ง์ ํ ํฐ๊ธฐ๋กํด๋๊ธฐ!!!
+
+* Personal Access Token (PAT) ์ฌ์ฉ : `git push --mirror` ๋ช
๋ น์ด์ Personal Access Token์ ํฌํจํ์ฌ ์ธ์ฆ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
+
+```
+git push --mirror https://@github.com/exampleuser/new-repository.git
+```
+
diff --git "a/developLog/ci-cd/github/_ \355\214\200\355\224\204\353\241\234\354\240\235\355\212\270\353\225\214 \354\225\214\354\225\204\353\202\270 github \354\247\200\354\213\235_.md" "b/developLog/ci-cd/github/_ \355\214\200\355\224\204\353\241\234\354\240\235\355\212\270\353\225\214 \354\225\214\354\225\204\353\202\270 github \354\247\200\354\213\235_.md"
new file mode 100644
index 0000000..58875ce
--- /dev/null
+++ "b/developLog/ci-cd/github/_ \355\214\200\355\224\204\353\241\234\354\240\235\355\212\270\353\225\214 \354\225\214\354\225\204\353\202\270 github \354\247\200\354\213\235_.md"
@@ -0,0 +1,196 @@
+---
+icon: person-chalkboard
+---
+
+# ํํ๋ก์ ํธ๋ ์์๋ธ github ์ง์
+
+![](https://velog.velcdn.com/images/prettylee620/post/310494d3-2d3b-4810-bec1-853d7a06ef40/image.png)
+
+## TMI
+
+> ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ํ ๊ณตํต ํ
ํ๋ฆฟ์ ๋ง๋ค๋ฉด์ ์๊ฒ ๋ github ์ฌ์ฉ๋ฒ ๋ฑ์ ์ ๋ฆฌํด๋ดค๋ค ๊ทธ ์ดํ ๊ณ์ ์ถ๊ฐ์์ ์ด๊ณ ํ ํ๋ก์ ํธ ๋๋๋ฉด 1๋ถํฐ 10๊น์ง ์ ๋ฆฌํด์ผ๊ฒ ๋ค
+
+## 1. ๋ฆฌ์กํธ๋ฅผ github์ ์ฌ๋ฆด ๋
+
+1. ๋ฆฌ์กํธ์ ์คํ๋ง๋ถํธ๋ฅผ ๊ฐ์ด ์ฐ๊ฒฐํ ๊ฒ์ ์ฌ๋ฆฌ๋๋ฐ **๋ฆฌ์กํธ ํ์ผ๋ง ์ ์ธ**๊ฐ ๋๋ค.
+
+* ๊ทธ๋์ ์ผ๋ถ ํ์ผ๋ง ์ฌ๋ฆฌ๋ ๊ฒ์ ํ๋ ค๋ค๊ฐโฆ ๋ฌด์ํ ๊ฐํ ๋ฌธ์ ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋จ
+
+2. `node/module`์ ์ฌ๋ฆฌ๋ฉด ์๋ฌ๊ฐ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ์ธ ์์ผ์ค์ผ ํจ
+
+* ์ 1์ : ๊ด๋ จ ํ๋ก์ ํธ ํ์ผ ๋ด `.gitgnore`์ ๋ค์ด๊ฐ์ ์์
+
+> ์๋ฌด ์์น์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ถ๊ฐ ํ ์ ์ฅ
+
+![](https://velog.velcdn.com/images/prettylee620/post/fd2ae5cf-aa90-4268-93f3-7b2f9d9c8b83/image.png)
+
+* ์ 2์ : ๋ช
๋ น์ด๋ก ์ ๊ฑฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/5ee75d73-64a8-4bb9-ab8f-26f3cbb011a5/image.png)
+
+3. ๊ทธ ํ ์ผ๋ถ ํ์ผ๋ง ์ฌ๋ฆฌ๊ธฐ ์ํด add
+
+![](https://velog.velcdn.com/images/prettylee620/post/83b294c0-4114-418f-ae3c-a307e21c59c3/image.png)
+
+4. warning์ด์ง๋ง ํฐ ๋ฌธ์ ์๋ค ํจ
+
+![](https://velog.velcdn.com/images/prettylee620/post/5bc2494c-0bd7-4655-b71b-5a16fa9ea0ee/image.png)
+
+5. ๊ทธ๋ฅ ๋ฌด์ํ๊ฑฐ๋ ์ด ๋ช
๋ น์ด ์ฐ๋ฉด ๋จ
+
+![](https://velog.velcdn.com/images/prettylee620/post/2e091bec-a2dc-414a-a5b3-2f61effb0808/image.png)
+
+6. ๊ทธ ํ commit ํ๊ณ push
+
+![](https://velog.velcdn.com/images/prettylee620/post/a32e8dbc-8876-4869-ba12-16e668f3fbc5/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/c1e454c4-def1-4890-8aaf-85f81c58fb25/image.png)
+
+7. ๋ฌธ์ ์์ด ์ถ๊ฐ๋จ
+
+![](https://velog.velcdn.com/images/prettylee620/post/d2b001dd-840c-4b13-a2c6-52ca505dee0d/image.png)
+
+8. node-moudules์ ๊ฒฝ์ฐ **`npm install` ํจํค์ง ์ค์น**
+
+* `node_modules/`๋ Node.js ํ๋ก์ ํธ์์ ์์กด์ฑ ํจํค์ง๋ค์ด ์ค์น๋๋ ๋๋ ํ ๋ฆฌ
+* ์ด ๋๋ ํ ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก Git์ ํฌํจ๋์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์์กด์ฑ ํจํค์ง๋ค์ **`package.json`** ํ์ผ์์ ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์๋ฒ์์ ํ๋ก์ ํธ๋ฅผ ํด๋ก ํ ํ **`npm install`** ๋๋ **`yarn install`** ๋ช
๋ น์ ํตํด ์์กด์ฑ ํจํค์ง๋ค์ ์ค์น ๊ฐ๋ฅ
+
+## 2. Git add์ ๊ฒฝ๊ณ ๋ฉ์ธ์ง
+
+**`git add`** ๋ช
๋ น์ ์คํํ ๋ ๋์ค๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ ์ฌ๋ฌ ์์ธ์ ๋ฐ๋ผ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ํ์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ค์ด ์์ต๋๋ค:
+
+1. **๋์ฉ๋ ํ์ผ**: Git์ ๋์ฉ๋ ํ์ผ(์ผ๋ฐ์ ์ผ๋ก 100MB ์ด์)์ ๋ํด์ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๋ณด๋
๋๋ค. ์ด๋ฌํ ๋์ฉ๋ ํ์ผ์ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ Git LFS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
+2. **๊ฐํ ๋ฌธ์**: Windows์ Unix ๊ณ์ด ์์คํ
(๋ฆฌ๋
์ค, ๋งฅ)์ ํ์ผ์ ๋์ ์ฌ์ฉํ๋ ๊ฐํ ๋ฌธ์๊ฐ ๋ค๋ฆ
๋๋ค. ์ด๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๊ฒฝ๊ณ ํ๋ ๋ฉ์์ง๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
+3. **.gitignore**: **`.gitignore`** ํ์ผ์ ๋ช
์๋์ด ์์ง ์๊ณ ์ถ์ ๋์ง ์์ ํ์ผ๋ค์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
+
+### ๐ซ ํด๊ฒฐ ๋ฐฉ๋ฒ
+
+1. **๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์จ๊น**: ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋๋ฌด ๋ง๊ณ , ์ค์ ๋ฌธ์ ๊ฐ ๋์ง ์์ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์จ๊ธฐ๊ณ ์ถ์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด **`-no-warn`** ์ต์
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. (ํ์ง๋ง, ์ด๋ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์จ๊ธฐ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ฌ์ง๊ฐ ์์ต๋๋ค.)
+
+ ```css
+ cssCopy code
+ git add --no-warn src/main/reactfront/
+
+ ```
+2. **์์ธ ํ์
๋ฐ ํด๊ฒฐ**: ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ง์ ์ฝ๊ณ ์์ธ์ ํ์
ํ ๋ค์ ๊ทธ ์์ธ์ ํด๊ฒฐํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ฉ๋ ํ์ผ์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ๋์ค๋ฉด ํด๋น ํ์ผ์ \*\*`.gitignore`\*\*์ ์ถ๊ฐํ๊ฑฐ๋, Git LFS๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
+3. **๊ฐํ ๋ฌธ์ ์ฒ๋ฆฌ**: ๊ฐํ ๋ฌธ์ ๊ด๋ จ ๊ฒฝ๊ณ ์ ๊ฒฝ์ฐ, Git ์ค์ ์ ํตํด ์๋์ผ๋ก ๋ณํ๋๊ฒ ์ค์ ํ ์ ์์ต๋๋ค:
+
+ ```arduino
+ arduinoCopy code
+ git config --global core.autocrlf true
+
+ ```
+
+## 3. ๊นํ๋ธ์ ํ๋ก์ ํธ๋ฅผ ์ฌ๋ ธ์ ๋ ํน์ ํ์ผ์ด๋ ํด๋๋ง ์ ์ธ ์์ธ
+
+### **`.gitignore` ํ์ผ**
+
+* **`.gitignore`** ํ์ผ์ Git์์ ์ถ์ ํ์ง ์์์ผ ํ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์
+* ๋ฆฌ์กํธ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ **`.gitignore`** ํ์ผ์๋ **`node_modules/`** ๋ฑ์ ๋๋ ํ ๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ด ์ด ๋๋ ํ ๋ฆฌ์ ํ์ผ๋ค์ Git์ ํฌํจ๋์ง ์์ต๋๋ค. ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ๋ฆฌ์กํธ ํด๋ ๋ด์ **`.gitignore`** ํ์ผ์ด ์๋์ง ํ์ธํ๊ณ ํด๋น ํ์ผ ๋ด์ฉ์ ์ ๊ฒํ ๊ฒ
+
+### **Git ์ด๊ธฐํ ์์น**
+
+* Git ์ ์ฅ์๋ `git init`์ ์คํํ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ ๋๋ ํ ๋ฆฌ ๋ฐ ํ์ผ๋ค์ ์ถ์ ํ๋ค.
+* ๋ฆฌ์กํธ ํ๋ก์ ํธ ๋ด์์ ๋ณ๋๋ก `git init`์ ์คํํ์ ๊ฒฝ์ฐ, ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ง ๋ณ๋์ Git ์ ์ฅ์๋ก ์ธ์๋์ด ์์ ํด๋์ Git์์๋ ๋ฌด์๋ ์ ์๋ค.
+* ์ด ๊ฒฝ์ฐ, ๋ฆฌ์กํธ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๋ด์ **`.git`** ๋๋ ํ ๋ฆฌ๊ฐ ์๋์ง ํ์ธํ๊ณ , ํ์์ ๋ฐ๋ผ ์ญ์ ํ ํ ์์ ๋๋ ํ ๋ฆฌ์์ ๋ค์ Git ๋ช
๋ น์ ์คํํ ๊ฒ
+
+### **์ปค๋ฐ ๋๋ฝ**
+
+* ๋ฆฌ์กํธ ํ์ผ์ ๋ณ๊ฒฝํ ํ `git add`์ **`git commit`** ๋ช
๋ น์ ์คํํ์ง ์์๋ค๋ฉด, ํด๋น ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐ๋์ง ์์
+* ๋ณ๊ฒฝ์ฌํญ์ด ์ ๋๋ก ์ปค๋ฐ๋์๋์ง ํ์ธํ๋ ค๋ฉด **`git status`** ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ํ์ผ ๋ชฉ๋ก์ ํ์ธํ ์ ์๋ค.
+
+### ๐ซ ํด๊ฒฐ ๋ฐฉ๋ฒ
+
+1. ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์์ **`git status`** ๋ช
๋ น์ ์คํํ์ฌ ํ์ฌ Git์ ์ํ๋ฅผ ํ์ธ
+2. ๋ฆฌ์กํธ ํ๋ก์ ํธ ํด๋ ๋ด์ **`.git`** ๋๋ ํ ๋ฆฌ๊ฐ ์๋์ง ํ์ธํ๊ณ , ์๋ค๋ฉด ์ญ์
+3. ํ๋ก์ ํธ ๋ฃจํธ์์ **`git add .`** ๋ช
๋ น์ ์คํํ์ฌ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์คํ
์ด์ง ์์ญ์ ์ถ๊ฐ
+4. **`git commit -m "Add React files"`** ๋ช
๋ น์ผ๋ก ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐ
+5. **`git push`** ๋ช
๋ น์ผ๋ก ๋ณ๊ฒฝ์ฌํญ์ ๊นํ๋ธ์ ํธ์
+
+## 4. ์๋(commit) ๋ด์ฉ์ ์งํค๋ฉด์ ๋ ๊ฐ์ repository ํฉ์น๊ธฐ
+
+### ๋ก์ปฌ์ ์๋ ๊ฒฝ์ฐ.. ๋ก์ปฌ์ clone ํด์ค์ผ ํจ
+
+1. ์ผ๋จ ๋ด๊ฐ ์์ฑ๋ณธ์ ๋ฃ์ ๋ ํฌ์งํ ๋ฆฌ(๋ ํฌ1) ์ ํ๊ธฐ
+2. ๋๋ `teamproject_read_blog` ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑ๋ณธ์ผ๋ก ํ๋ ค๊ณ ํ๋ค.
+3. git remote๋ก `teamproject_read_blog` ์ ๋ถ๋ฌ์ค๊ธฐ
+
+* ๋๋ ์ด๋ฆ ์ง์ ์ ์์ด์ ๊ทธ๋ฅ ๋ ํฌ์งํ ๋ฆฌ ์ด๋ฆ ๋๋ก ์ ์ฅ์ด ๋จ
+
+```java
+git remote add repo1 https://github.com/YourUsername/Repo1.git
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/5a14f0fb-61d2-45c9-828a-f68ce2c96a7e/image.png)
+
+4. ๊ทธ ํด๋๋ก ์ด๋ ํ๋ค
+
+```java
+cd teamproject_read_blog
+```
+
+5. `git fetch`๋ฅผ ํด์ค๋ค.
+
+```java
+git fetch teamproject_read_blog
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/224abfd0-e3f0-42ee-a6f4-ff7c214e25bc/image.png)
+
+6. ๋ก์ปฌ์ ์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ๊ฒ์ด ๋ฐ์
+
+* clone์ ํด์ค์ผ ํจ
+
+![](https://velog.velcdn.com/images/prettylee620/post/41141087-9ac3-4153-b0ef-58c920fca130/image.png)
+
+7. ๊ทธ ํ ํด๋๋ก ์ด๋ํ๊ณ `remote`ํด์ฃผ๊ธฐ
+
+```java
+cd teamproject_read_blog
+git remote add react_springboot_template https://github.com/GoldenPearls/react_springboot_template.git
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/604c5985-4521-4489-a608-2c6fc02e44ad/image.png)
+
+8. `merge` ํด์ฃผ๊ธฐ
+
+* ์ฒซ ๋ฒ ์งธ ์๋ ๊ทธ๋ฅ merge ํด์ฃผ๊ธฐ
+
+```java
+git merge react_springboot_template/master
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/94378bad-9aab-48a7-8561-13d185dbc44e/image.png)
+
+* ๋ ๋ฒ์งธ ์๋ : --allow-unrelated-histories
+ * "refusing to merge unrelated histories"๋ ๋ Git ์ ์ฅ์์ ๊ธฐ๋ก์ด ์์ ํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ Git์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณํฉ์ ๊ฑฐ๋ถ
+
+```java
+git merge react_springboot_template/master --allow-unrelated-histories
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/56856f86-0e5c-4869-951e-61cc71632a8e/image.png)
+
+9. `push` ํด์ฃผ๊ธฐ
+
+```java
+git push origin main
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/5c7bbd03-1989-4e81-bdac-cfbae95a5289/image.png)
+
+10. ๊ฒฐ๊ณผ : ์ปค๋ฐ๋ ์ ์งํค๋ฉด์ ํฉ์ณ์ง
+
+![](https://velog.velcdn.com/images/prettylee620/post/891c917c-35fb-43fa-b78d-3eb890e9f508/image.png)
+
+## 5. ๋จ์ด ์๊ธฐ
+
+### ๐ซ remote๋?
+
+* **`remote`**๋ Git์์ ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ฐธ์กฐํ๋ ๋จ์ถ ์ด๋ฆ
+* ์๊ฒฉ ์ ์ฅ์๋ ์ธํฐ๋ท์ด๋ ๋คํธ์ํฌ ์ด๋๊ฐ์ ์กด์ฌํ๋ ์ ์ฅ์๋ฅผ ์๋ฏธํ๋ฉฐ, ์ฌ๋ฌ ์ฌ๋์ด ํ์
ํ ๋ ๋์ผํ ํ๋ก์ ํธ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ตํํ๊ธฐ ์ํด ์ฌ์ฉ
+* ์๋ฅผ ๋ค์ด, GitHub์์ ํ๋ก์ ํธ๋ฅผ ํด๋ก (clone)ํ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก zip ํ์ผ๋ก ๋ฐ์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธด๊ฑฐ cloneํ๋ฉด ๊ณ ์ณ์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค(์ค์ ๊ฒฝํ๋ด...)
+
+
+
+ > ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ํ ๊ณตํต ํ
ํ๋ฆฟ์ ๋ง๋ค๋ฉด์ ์๊ฒ ๋ github ์ฌ์ฉ๋ฒ ๋ฑ์ ์ ๋ฆฌํด๋ดค๋ค ๊ทธ ์ดํ ๊ณ์ ์ถ๊ฐ์์ ์ด๊ณ ํ ํ๋ก์ ํธ ๋๋๋ฉด 1๋ถํฐ 10๊น์ง ์ ๋ฆฌํด์ผ๊ฒ ๋ค
diff --git "a/developLog/ci-cd/github/github.io/_ github_io Chipy \355\205\214\353\247\210 \354\227\260\353\217\231 \355\225\230\352\270\260_.md" "b/developLog/ci-cd/github/github.io/_ github_io Chipy \355\205\214\353\247\210 \354\227\260\353\217\231 \355\225\230\352\270\260_.md"
new file mode 100644
index 0000000..465926e
--- /dev/null
+++ "b/developLog/ci-cd/github/github.io/_ github_io Chipy \355\205\214\353\247\210 \354\227\260\353\217\231 \355\225\230\352\270\260_.md"
@@ -0,0 +1,217 @@
+---
+description: github.io๋ก ๋ธ๋ก๊ทธ ๋ง๋ค๊ธฐ 1ํ
+---
+
+# github.io Chipy ํ
๋ง ์ฐ๋ ํ๊ธฐ
+
+## github.io blog ๋ง๋ค๊ธฐ
+
+### 1) TMI
+
+์์ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๊ณ ์๊ณ , ํ๋ก์ฐ๋ 100๋ช
์ ๋์๋ค.
+
+![](https://velog.velcdn.com/images/prettylee620/post/3f7c738d-963b-4526-aa53-317ec20774c4/image.png)
+
+ํ์ง๋ง.. ์ฎ๊ธฐ์ง๋ ์๊ณ ๋ ๊ณณ์ ์ด์ํ ๊น ๊ณ ๋ฏผ์ค... **Velog์ ๋จ์ ์ด ๋ด๊ฐ ์ด ๊ธ ํ ๋์ ์๋ณด์ฌ ใ
ใ
ใ
ใ
**
+
+Github Page๋ฅผ ํตํ ๋ธ๋ก๊น
์ ์๋ํ์ผ๋ ๊น๋ค๋ก์ด ์ค์น์ ์ปค์คํฐ๋ง์ด์ง์ด,์ด๋ ต๋ค๊ธฐ์ ํ
๋ง ์ ํ ์ ์ฌ์ฉ์ ์๊ฐ ๋ง๊ณ ๊ณ์ update ๋๊ณ ์์ผ๋ฉฐ, ๋ด ๋ง์์ ๋ค๊ณ ์ฌ์ฉ์๊ฐ๋ง์ ํ
๋ง์ธ [Chipy](https://github.com/cotes2020/jekyll-theme-chirpy)๋ฅผ ์ ํ!!
+
+### 2) Local์์ ํ
์คํธ ํ๊ธฐ ์ ์ ์ธํ
+
+> [Jekyll-Chirpy-ํ
๋ง ๊ธ์ฐ๊ธฐ, ์ปค์ค๋ง์ด์ง ๋ฑ](https://www.irgroup.org/posts/jekyll-chirpy/) [Jekyll-Chirpy-ํ
๋ง๋ฅผ-ํ์ฉํ-Github-๋ธ๋ก๊ทธ-๋ง๋ค๊ธฐ(2023-6์-๊ธฐ์ค)](https://jjikin.com/posts/Jekyll-Chirpy-%ED%85%8C%EB%A7%88%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-Github-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0\(2023-6%EC%9B%94-%EA%B8%B0%EC%A4%80\))
+
+1. ๋ฆฌํฌ์งํ ๋ฆฌ `fork` ํด์์ ์์ฑํ๊ธฐ
+
+* ๊ผญ ๋ฆฌํฌ์งํ ๋ฆฌ๋ช
์ `github ์ ์ ์ด๋ฆ.github.io`๋ก ํด์ผ ํ๋ค๊ณ ๋ค!!
+
+![](https://velog.velcdn.com/images/prettylee620/post/ba804212-34fe-4099-8e41-6a6823df1e0b/image.png)
+
+2. branch๋ฅผ master์์ main์ผ๋ก ๋ณ๊ฒฝํ๊ณ Branch protection rule๋ ๊ธฐ๋ณธ๊ฐ (์ฒดํฌ x)์ผ๋ก ์ค์
+
+![](https://velog.velcdn.com/images/prettylee620/post/b07b61da-641f-4346-b9cf-bbd6495f57e3/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/e792ddd2-8c3f-4a6e-b0eb-a09f62d7570c/image.png) ![](https://velog.velcdn.com/images/prettylee620/post/8766155f-73e3-4313-ab0e-76ae5dae7be3/image.png)
+
+3. git clone ํด์ค๊ธฐ
+
+* ๋ฃ์ด๋ ํด๋๋ก ์ด๋ ํด์ clone ํด์ค๊ธฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/0ca2568f-abc7-4fb6-b3a6-09e06824052b/image.png)
+
+```jsx
+cd blog
+git clone https://github.com/GoldenPearls/GoldenPerals.github.io.git
+```
+
+## Local์์ ์ธํ
+
+> ์ฐธ๊ณ : [๋ณ์ค : ๋ฃจ๋น ์ค์น ํ๊ธฐ](https://junstar92.tistory.com/5)
+
+1. CMD๋ก Ruby ์ค์น ํ๊ธฐ
+
+> ๊ผญ 3. ์ด์ ์ค์น ํ ๊ฒ !
+
+2. Ruby๋ฅผ ์ค์นํ๋ค๋ฉด ๋ฒ์ ์ ๊ฒ์์ ๋์ฌ ๊ฒ์
+
+```jsx
+cd GoldenPerals.github.io
+ruby -v
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/6dcefcd1-9818-4d14-bd6b-ab3054d3dbbd/image.png)
+
+์ด๋ ๊ฒ๋ง ์ค์นํ๊ณ ์๋ฒ ์คํํ๋ ค๊ณ ํ๋ฉด ์ด๋ฐ ์๋ฌ๊ฐ ๋์ฌ ์๋ ์์ ๊ทธ๋ฐ ๊ฒฝ์ฐ๋ `ํ๊ฒฝ ๋ณ์ ์ค์ `์ด ํ์ํจ
+
+![](https://velog.velcdn.com/images/prettylee620/post/f45f43a4-8214-4e2f-848c-0b7ac29187f8/image.png)
+
+2. ํ๊ฒฝ ๋ณ์ ์ค์ ์ด ํ์ Path ์์ ํธ์ง
+
+![](https://velog.velcdn.com/images/prettylee620/post/f94734d6-e67e-4f9f-a644-f224264b0aa3/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/33a3b039-2919-4ee7-a89c-124e4004ff4d/image.png)
+
+```jsx
+C:\Users\rmawn\AppData\Local\Microsoft\WindowsApps
+```
+
+3. jekyll ์คํ์ ์ํด ํ์ํ ๋ชจ๋ ์ค์น
+
+![](https://velog.velcdn.com/images/prettylee620/post/0c1d675f-0341-47b3-a015-aecc6926476f/image.png)
+
+4. npm์ ํตํด node.js ๋ชจ๋ ์ค์น
+
+```jsx
+npm install && npm run build
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/ac853e67-6313-4ebf-a208-642aef312503/image.png)
+
+5. ์ค์น ์๋ฃ ํ ์๋ ๋ช
๋ น์ด๋ฅผ ํตํด ๋ก์ปฌ์์ jekyll์ ์คํ
+
+```jsx
+jekyll serve
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/f710e210-be75-4270-86df-c936a55d35e3/image.png)
+
+#### ๐ **๋ฌธ์ ๋ฐ์**
+
+![](https://velog.velcdn.com/images/prettylee620/post/bd7fa754-ede0-42d6-9a3c-ef3c184a1643/image.png)
+
+๋จผ์ ์์์ ์ฒ๋ผ
+
+1. ํ๊ฒฝ๋ณ์ ์ถ๊ฐ
+2. `Gemfile` ํ์ผ ์์
+
+![](https://velog.velcdn.com/images/prettylee620/post/343c2a30-b6ff-4e33-b098-8800ddb60167/image.png)
+
+3. ์๋์ ์ฝ๋
+
+```jsx
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+gemspec
+
+group :test do
+ gem "html-proofer", "~> 5.0"
+end
+```
+
+4. ์์
+
+```jsx
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+gemspec
+
+group :test do
+ gem "html-proofer", "~> 5.0"
+end
+
+gem "tzinfo" # ์๊ฐ๋ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
+gem "tzinfo-data" # Windows์์ tzinfo๋ฅผ ์ง์ํ๊ธฐ ์ํ ๋ฐ์ดํฐ
+```
+
+6. cmd ๊ป๋ค๊ฐ ๋ค์ ์ผ์ ํ์ธํด๋ณด๊ธฐ
+
+```jsx
+jekyll serve
+```
+
+![](https://velog.velcdn.com/images/prettylee620/post/4577b948-a8b2-492b-b7cc-6a2d52a88a32/image.png)
+
+7. ์น๋ธ๋ผ์ฐ์ ์์ 127.0.0.1:4000 ์ฃผ์๋ก ๋ธ๋ก๊ทธ๊ฐ ์ ์์ ์ผ๋ก ํ์๋๋์ง ํ์ธํ๊ณ ๋ธ๋ก๊ทธ ๋ด ์ฌ๋ฌ ๋ฉ๋ด ๋ฐ ๊ธฐ๋ฅ๋ค๋ ์ ์ ๋์ํ๋์ง ํ์ธ
+
+![](https://velog.velcdn.com/images/prettylee620/post/612687e4-7490-4f68-8d08-92db45e2de9a/image.png)
+
+![](https://velog.velcdn.com/images/prettylee620/post/58c63c98-fce9-4af0-a80e-668bcc89f588/image.png)
+
+```rust
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+gemspec
+
+group :test do
+ gem "html-proofer", "~> 5.0"
+end
+
+gem "tzinfo" # ์๊ฐ๋ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
+gem "tzinfo-data" # Windows์์ tzinfo๋ฅผ ์ง์ํ๊ธฐ ์ํ ๋ฐ์ดํฐ
+
+```
+
+### ๊ธ ์ฐ๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํ ํ๋ฌ๊ทธ์ธ
+
+> https://github.com/jekyll/jekyll-compose
+
+### ๋ฐฐํฌํ๊ธฐ
+
+1. ๋ฐฐํฌํ๊ธฐ ์ gitgnore ์ธํ
ํ๊ธฐ
+
+![](https://velog.velcdn.com/images/prettylee620/post/beb0ace2-c081-4389-8723-3b52daa3d78b/image.png)
+
+* ์ฐ์ , `.gitignore` ํ์ผ์ ์ด์ด์ ์๋ ๋ด์ฉ์ ์ฃผ์ ์ฒ๋ฆฌ
+
+```jsx
+# Misc
+#_sass/dist
+#assets/js/dist
+```
+
+2. ๋ฐฐํฌํ๊ธฐ
+
+```jsx
+git add .
+git commit -m "docs: add new blog post"
+git push
+```
+
+3. setting > page > git action ์ถ๊ฐ ![](https://velog.velcdn.com/images/prettylee620/post/cb6253bb-ef56-4dc0-98a2-e6073bf194bc/image.png)
+
+* configure๊น์ง ํด์ค์ผ ํจ
+
+![](https://velog.velcdn.com/images/prettylee620/post/e95923a4-4544-446f-bc0a-3f37f955572d/image.png)
+
+4. ๋ก์ปฌ์ด๋ ๋ง์ถฐ์ค์ผ ํจ
+
+![](https://velog.velcdn.com/images/prettylee620/post/51eb7b1b-9512-4b0f-b59a-e42440c1f450/image.png)
+
+5. ์ปค์คํฐ๋ง์ด์ง์ ์ํ \_config.yml ์์ ํ๊ธฐ
+
+> [์ฐธ๊ณ ๊นํ๋ธ](https://github.com/focuschange-test/focuschange-test.github.io/blob/main/\_config.yml)
+
+```jsx
+git add .
+git commit -m "chore: update config.yml settings"
+git push
+```
+
+ํ... ์ผ๋จ ๋ฐฐํฌ๋ง ํด๋๊ณ ... ์ง๊ธ gitbook ํ
๋ง๊ฐ ๋ ๋ง์์ ๋ค์ด์ gitbook์๋ง ํด๋๊น? ์๋ github.io๋ ์ฐ๊ฒฐํด์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๊น ๊ณ ๋ฏผ์ค์
+
+๋ด [gitbook](https://mellona-log.gitbook.io/log)
diff --git "a/developLog/cs/_ CS \352\264\200\353\240\250 BOOKMARK_.md" "b/developLog/cs/_ CS \352\264\200\353\240\250 BOOKMARK_.md"
new file mode 100644
index 0000000..4e06d29
--- /dev/null
+++ "b/developLog/cs/_ CS \352\264\200\353\240\250 BOOKMARK_.md"
@@ -0,0 +1,20 @@
+---
+icon: circle-bookmark
+---
+
+# CS ๊ด๋ จ BOOKMARK
+
+> ์ด ๋ฐ์ ์๋ ๊ฒ๋ค ์ค ์๊ธฐ ์ทจํฅ์ ๊ณจ๋ผ ํ๋๋ง ๋ณด๊ณ ๋ค๋ฅธ ๊ฑธ๋ก ๋ถ์กฑํ ๊ฒ ์ฑ์๊ฐ๋ฉด ์ถฉ๋ถํ ๊ฒ ๊ฐ๋ค.
+
+* [\[IT ๊ฐ๋ฐ์์ ์ผํ ๋ ํ์ํ ๋ชจ๋ ๊ฐ๋ฐ์ง์\] A to Z ์๋ฃ ๋ชจ์์ง By ๊ทธ๋ฉ](https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304) ์ฌ๋งํ CS ์ง์ ์งํฉ์ฒด IT ๋ถ์ผ ์ข
์ฌ์๋ผ๋ฉด ๋ด์ผํจ
+* [\[IT ๊ฐ๋ฐ์์ ์ผํ ๋ ํ์ํ ๋ชจ๋ ๊ฐ๋ฐ์ง์\] A to Z ์๋ฃ ๋ชจ์์ง By ๊ทธ๋ฉ์ ์ด๋ ค์ด IT ์ฉ์ด ์ ๋ฆฌ](https://www.grabbing.me/IT-e042e5f23b2147878ead089c97ef3c77#35a8ac77dfa84380bdd9d1c4e29e84d3) ์์ ๋๊ฐ์ ๊ณณ์ผ๋ก ์ด๋ ค์ด IT ์ฉ์ด ๋ชจ์
+* [์ ์
๊ฐ๋ฐ์ ์ ๊ณต ์ง์ & ๊ธฐ์ ๋ฉด์ ๋ฐฑ๊ณผ์ฌ์ ](https://gyoogle.dev/blog/) ๊ธฐ์ ๋ฉด์ ์ ๋ํ ์ ๋ฆฌ๊ฐ ์ฒด๊ณ์ ์ผ๋ก ์๋์ด ์๋ ํธ
+* [์ ์
๊ฐ๋ฐ์ ์ ๊ณต ์ง์ & ๊ธฐ์ ๋ฉด์ ๋ฐฑ๊ณผ์ฌ์ ](https://github.com/WooVictory/Ready-For-Tech-Interview) ์์ ์น์ฌ์ดํธ GITHUB ๋ฒ์
+* [๋ค๋ฅธ ์ฌ๋์ด ๋ฉด์ ์ ๋ฌผ์ด๋ณธ ๊ฒ์ VELOG์ ์ ๋ฆฌํ ๊ฒ](https://velog.io/@matisse/%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EC%A0%95%EB%A6%AC-CS) 3๋
์ ๊ธ์ด๊ธด ํ๋ฐ ์ ๋ฆฌ๊ฐ ์๋์์ด์ ๋๋ ๋์ค์ ๋ฉด์ ์ ์ ๋ฐ์์ผ๋ก ์ ๋ฆฌํด์ผ ๊ฒ ๋ค๋ฅผ ์๊ฐํจ
+* [READY FOR TECH INTERVIEW](https://github.com/WooVictory/Ready-For-Tech-Interview) ์ด ๊ณณ์ ์ ์
ํน์ ์ฃผ๋์ด ๊ฐ๋ฐ์์๊ฒ ํ์ํ ์ง์์ ์ ๋ฆฌํ๋ GITHUB
+* [Technical Interview Guidelines for Beginners](https://github.com/JaeYeopHan/Interview\_Question\_for\_Beginner) ์์ํ๋ ์ฃผ๋์ด ๊ฐ๋ฐ์๋ค์ ์ํ ๊ธฐ์ด ์ง์ ์ ๋ฆฌํ GITHUB
+* [Backend-Interview-Question](https://github.com/ksundong/backend-interview-question) ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์
์ฌ์ ์ง๋ฌธ, ์์์ง๋ฌธ GITHUB
+* [ํ๋ก ํธ์๋ ๊ธฐ์ ๋ฉด์ ๋๋นํ๊ธฐ -1ํธ](https://f-lab.kr/blog/frontend-interview-1) ํ๋ก ํธ์ค๋ ๋ฉด์ ์ง๋ฌธ์ ๋ฆฌ๋์ด ์๋ F-LAB
+* [์๋ฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ง๋ฌธ](https://f-lab.kr/blog/java-backend-interview-2) ์๋ฐ ๊ธฐ์ ๋ฉด์ ๋๋นํ๊ธฐ์ ๋ฆฌ ๋์ด ์๋ F-LAB
+* [์ค์ ๋ก ๋ฐ์ ํ๋ก ํธ์ค๋ ์ง๋ฌธ๋ชจ์ ์ ๋ฆฌ](https://xiubindev.tistory.com/119) ํ๋ก ํธ์ค๋ ์ง๋ฌธ ์ ๋ฆฌ๊ฐ ๋์ด ์๋ Tistory
+* [์ปดํจํฐ ๊ณผํ ํค์๋ ์ด์ ๋ฆฌ](https://csnote.net/) : ์ปดํจํฐ ๊ณผํ ํค์๋๊ฐ ์ด ์ ๋ฆฌ๋์ด ์๋ ์ฌ์ดํธ
diff --git "a/developLog/cs/etc/_ \353\251\200\355\213\260\354\272\240\355\215\274\354\212\244\354\227\220\354\204\234 \353\260\260\354\232\264 cs \354\247\200\354\213\235_.md" "b/developLog/cs/etc/_ \353\251\200\355\213\260\354\272\240\355\215\274\354\212\244\354\227\220\354\204\234 \353\260\260\354\232\264 cs \354\247\200\354\213\235_.md"
new file mode 100644
index 0000000..74659e2
--- /dev/null
+++ "b/developLog/cs/etc/_ \353\251\200\355\213\260\354\272\240\355\215\274\354\212\244\354\227\220\354\204\234 \353\260\260\354\232\264 cs \354\247\200\354\213\235_.md"
@@ -0,0 +1,424 @@
+# ๋ฉํฐ์บ ํผ์ค์์ ๋ฐฐ์ด cs ์ง์
+
+## 1. ์๋ฒ(Server)
+
+### **1) ์๋ฒ๋..**
+
+**์ธ์ด์ ์ธ ๊ด์ **์์ ๋ณด์๋ฉด
+
+* ํ
๋์ค, ํ๊ตฌ, ๋ฐฐ๊ตฌ ๋ฐ์์์ ํ๋ ์๋ธํ๋ ์ชฝ, ๋๋ ๊ทธ ์ฌ๋
+* ์์, ์๋ฃ๋ฅผ ๋ด๋๋ฐ ์ฐ๋ ๋๊ตฌ
+* ์ฃผ๋ ์ ๋ณด์ ์ ๊ณต์ด๋, ์์
์ ์ํํ๋ ์ปดํจํฐ ์์คํ
+
+### **2) ์ปดํจํฐ์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.**
+
+์น๋ธ๋ผ์ฐ์ : ํด๋ผ์ด์ธํธ ์ปดํจํฐ : ์๋ฒ
+
+### **3) ์๋ฒ์ ์ฒ๋ฆฌ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ผ๋ก ์์๋๋ค.**
+
+์๋ฒ๋ ๊ทธ ์์ฒด๋ก ์๋ํ๋ ๊ฒ์ด ์๋๋ผ, ๋ถํน์ ๋ค์์ ์ปดํจํฐ์ ๋ํด ์ผ๋ฐฉ์ ์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ์ง ์์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ `์์ฒญ(request)`์ ๋ฐ์์ ์ฒ์์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ์์ํ๊ณ , ์๋น์ค๋ฅผ `์ ๊ณต(์๋ต, response)`ํ๋ค.
+
+1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ๋ฌด์ธ๊ฐ์ ์๋น์ค๋ฅผ ์์ฒญํ๋ค.
+2. ์๋ฒ๋ ์์ฒญ์ ๋ฐ๋ผ ๋ง์ถฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
+3. ์๋ฒ๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ฐํ
+4. ํด๋ผ์ด์ธํธ๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋๋ค.
+
+### **4) ์น์๋น์ค์ ๋์
ํด๋ณด์**
+
+**ํด๋ผ์ด์ธํธ** : ๊ตฌ๊ธ ํฌ๋กฌ, ์ฌํ๋ฆฌ์ ๊ฐ์ ์น๋ธ๋ผ์ฐ์ **์๋ฒ** : ์น์ฌ์ดํธ(์ ๊ตฌ์ฑ ํ์ผ)์ด ์๋ ์ปดํจํฐ
+
+5. ์น๋ธ๋ผ์ฐ์ ๋ ์น์๋ฒ์ ใ
ใ
์ฌ์ดํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ์ญ์์ค๋ผ๊ณ ์์ฒญํ๋ค.
+6. ์น์๋ฒ๋ ใ
ใ
์ฌ์ดํธ์ ํ์ผ์ ์ฐพ๋๋ค.
+7. ์น์๋ฒ๋ ใ
ใ
์ฌ์ดํธ์ ํ์ผ์ ์น๋ธ๋ผ์ฐ์ ์ ๋ฐํํ๋ค.
+8. ์น๋ธ๋ผ์ฐ์ ๋ ใ
ใ
์ฌ์ดํธ์ ํ์ผ์ ๋ฐ์์ ํ๋ฉด์ ํ์ํ๋ค. โ ์ด๋ฌํ ์์คํ
์ `ํด๋ผ์ด์ธํธ/์๋ฒ ์์คํ
`์ด๋ผ๊ณ ํจ
+
+์ถ์ฒ : ์๋ฒ์ ๊ธฐ์ด ์ฑ
+
+***
+
+## 2. ์น ์๋ฒ(Web Server)
+
+### 1) ์น์๋น์ค
+
+**ํด๋ผ์ด์ธํธ** : ๊ตฌ๊ธ ํฌ๋กฌ, ์ฌํ๋ฆฌ์ ๊ฐ์ ์น๋ธ๋ผ์ฐ์ **์๋ฒ** : ์น์ฌ์ดํธ(์ ๊ตฌ์ฑ ํ์ผ)์ด ์๋ ์ปดํจํฐ
+
+
+
+### **2) ์น ์๋ฒ**๋(WEB) = ์ํ์น
+
+* ํ๋์จ์ด์ ์ํํธ์จ์ด ํน์ ๋ ๊ฐ๊ฐ ๊ฐ์ด ๋์ํ๋ ๊ฒ์ ์๋ฏธ
+* **๋ง ๊ทธ๋๋ก ์์ฑ๋ html ํ์ด์ง ๋ฑ์ ๋คํธ์ํฌ ๋ง์ ์ข
์๋์ง ์๊ณ , ์น์๋น์ค๋ฅผ ํ ์ ์๋๋ก ์ดํ๋ฆฌ์ผ์ด์
**
+* ๋ธ๋ผ์ฐ์ ์์ ์น ์๋ฒ์์ ๋ถ๋ ค์ง ํ์ผ์ ํ์๋ก ํ ๋, ๋ธ๋ผ์ฐ์ ๋ HTTP๋ฅผ ํตํด ํ์ผ์ ์์ฒญ
+* ์์ฒญ์ด ์ฌ๋ฐ๋ฅธ `์น ์๋ฒ(ํ๋์จ์ด)`์ ๋๋ฌ ์, `HTTP ์๋ฒ(์ํํธ์จ์ด)`๋ ์์ฒญ๋ ๋ฌธ์๋ฅผ HTTP๋ฅผ ์ด์ฉํด ๋ณด๋ด์ค
+
+#### ์น ์๋ฒ ์ํํธ์จ์ด ์ข
๋ฅ
+
+* ์๋น์ค๋ณ๋ก ์๋ฒ ์ํํธ์จ์ด๊ฐ ์์ผ๋ฉฐ, ๊ฐ๊ฐ ํน์ง์ด ์์ผ๋ ์น ์๋ฒ๋ก์ ๊ธฐ๋ฅ์ ๊ณตํต
+* APache
+* IIS
+* nginx
+
+### 3) ํ๋์จ์ด ์ธก๋ฉด
+
+* `์น ์๋ฒ`๋ ์น ์๋ฒ์ ์ํํธ์จ์ด์ website์ ์ปดํฌ๋ํธ ํ์ผ์ ์ ์ฅํ๋ ์ปดํจํฐ
+* ์ํํธ์จ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์ปดํจ
+ * **์ปดํฌ๋ํธ ํ์ผ**์ด๋?
+ * HTML๋ฌธ์, images, CSS stylesheets, JavaScript files
+* ์น ์๋ฒ๋ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ๊ธฐ๊ธฐ๋ค์ด ์น ์๋ฒ์ ๋ฐ์ดํฐ(์ปดํฌ๋ํธ ํ์ผ๋ค)์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํจ
+
+### 4) ์ํํธ์จ์ด ์ธก๋ฉด
+
+* ์น ์๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์น ์ฌ์ฉ์๊ฐ ์ด๋ป๊ฒ ํธ์คํธ์ ํ์ผ๋ค์ ์ ๊ทผํ๋์ง๋ฅผ ๊ด๋ฆฌํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ
+* HTTP ์๋ฒ๋ URL๊ณผ HTTP(์ฐ๋ฆฌ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์น ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํ๋กํ ์ฝ)์ ์ํํธ์จ์ด
+ * **URL์ ๊ตฌ์ฑ์์**
+ * ํ๋กํ ์ฝ, ์๋ฒ์ฃผ์, ํฌํธ๋ฒํธ, ํ์ผ๊ฒฝ๋ก
+* `HTTPS ์๋ฒ, HTTP ์๋ฒ`๋ฅผ ์น ์๋ฒ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ก ํจ
+
+๐ ์ฐธ๊ณ ๋ก ใ
ใ
์๋ฒ์ ใ
ใ
์๋ **์ ๊ณตํ๋ ์๋น์ค์ ์ด๋ฆ**์ ๋ฃ๋๋ค. ex. ์นด์นด์คํก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์นด์นด์คํก ์๋ฒ ex2. ์น ์๋ฒ๋ฅผ โHTTP ์๋ฒโ ๋ฉ์ผ ์๋ฒ๋ฅผ โSMTP ์๋ฒโ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ
+
+
+
+* ์ถ์ฒ: https://developer.mozilla.org/ko/docs/Learn/Common\_questions/Web\_mechanics/What\_is\_a\_web\_server
+
+***
+
+## 3. ์น ์ปจํ
์ด๋(Web Container)
+
+### 1) ์น ์ปจํ
์ด๋๋?
+
+* `์๋ธ๋ฆฟ ์ปจํ
์ด๋`๋ผ๊ณ ๋ ํจ
+* **JSP + ์๋ธ๋ฆฟ์ ์คํ์ํฌ ์ ์๋ ์ํํธ์จ์ด**
+* ์น ์๋ฒ์ ์ปดํฌ๋ํธ ์ค ํ๋๋ก ์๋ฐ ์๋ธ๋ฆฟ๊ณผ ์ํธ์์ฉ
+* **์๋ธ๋ฆฟ์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ**ํ๊ณ , URL๊ณผ ํน์ ์๋ธ๋ฆฟ์ ๋งตํํ๋ฉฐ URL ์์ฒญ์ด ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๊ถํ์ ๊ฐ๋๋ก ๋ณด์ฅ
+* ์๋ธ๋ฆฟ, ์๋ฐ ์๋ฒ ํ์ด์ง(JSP) ํ์ผ, ๊ทธ๋ฆฌ๊ณ ์๋ฒ-์ฌ์ด๋ ์ฝ๋๊ฐ ํฌํจ๋ ๋ค๋ฅธ ํ์
์ ํ์ผ๋ค์ ๋ํ `์์ฒญ`์ ๋ค๋ฃฌ๋ค.
+* ์๋ธ๋ฆฟ ๊ฐ์ฒด ์์ฑ, ์๋ธ๋ฆฟ์ ๋ก๋์ ์ธ๋ก๋ํ๋ฉฐ, `์์ฒญ๊ณผ ์๋ต` ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๊ณ , ๋ค๋ฅธ ์๋ธ๋ฆฟ ๊ด๋ฆฌ ์์
์ ์ํ
+* ์น ์ปดํฌ๋ํธ ์๋ฐ EE ์ํคํ
์ฒ ์ ์ฝ์ ๊ตฌํํ๊ณ , ๋ณด์, ๋ณํ์ฑ, ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ, ํธ๋์ญ์
, ๋ฐฐํฌ ๋ฑ ๋ค๋ฅธ ์๋น์ค๋ฅผ ํฌํจํ๋ ์น ์ปดํฌ๋ํธ์ ์คํํ๊ฒฝ ๋ช
์ธ
+
+### 2) ์๋ธ๋ฆฟ ์ปจํ
์ด๋ ๋ชฉ๋ก
+
+* ์ํ์น ํฐ์บฃ
+* ์ํ์น ์ ๋ก๋๋ชจ
+* ์ค๋ผํด์ ํด๋์คํผ์
+* ์ ์ด๋ณด์ค
+* ์ถ์ฒ
+
+[https://ko.wikipedia.org/wiki/์น\_์ปจํ
์ด๋](https://ko.wikipedia.org/wiki/%EC%9B%B9\_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88)
+
+[https://helloworld-88.tistory.com/71#:\~:text=โ ](https://helloworld-88.tistory.com/71) ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ (WAS%2C Web Application Server)๋%3F,์ปดํจํฐ๋ ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํํด ์ฃผ๋ ๋ฏธ๋ค์จ์ด (์ํํธ์จ์ด ์์ง)์ด๋ค.
+
+***
+
+## 4. WAS(Web Application Server) = tomcat
+
+### 1) WAS๋?
+
+* ์น ์๋ฒ + ์น ์ปจํ
์ด๋(Servel ์ปจํ
์ด)
+* ์ธํฐ๋ท ์์์ HTTP๋ฅผ ํตํด ์ฌ์ฉ์ ์ปดํจํฐ๋ ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํํด ์ฃผ๋ ๋ฏธ๋ค์จ์ด(์ํํธ์จ์ด ์์ง)
+* `๋์ ์๋ฒ ์ฝํ
์ธ ๋ฅผ ์ํํ๋ ๊ฒ`์ผ๋ก ์ผ๋ฐ์ ์ธ ์น ์๋ฒ์ ๊ตฌ๋ณ๋๋ฉฐ, ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ๊ฐ์ด ์ํ
+* ์น ์์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ ค๋๊ณ ์ฌ์ฉํ๊ฒ ๋๋ ์๋ฒ
+
+#### ๊ธฐ๋ฅ
+
+* ํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ๊ณผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ์ ๊ธฐ๋ฅ ์ ๊ณต
+* ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
๊ด๋ฆฌ
+* ์
๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง ์ํ
+* Web Service ํ๋ซํผ์ ์ญํ
+
+#### WAS ์ข
๋ฅ
+
+* tomcat
+* tMax jeus
+* Oracle
+
+### 2) WEB ์๋ฒ์ WAS ๋น๊ต
+
+* WEB ์๋ฒ : HTML ๋ฌธ์์ ๊ฐ์ `์ ์ ์ปจํ
์ธ `๋ฅผ ์ฒ๋ฆฌ ํ๋ ๊ฒ(HTTP ํ๋กํ ์ฝ์ ํตํด ์ฝํ ์ ์๋ ๋ฌธ์)
+* WAS ์๋ฒ : asp, php, jsp ๋ฑ ๊ฐ๋ฐ ์ธ์ด๋ฅผ ์ฝ๊ณ ์ฒ๋ฆฌํ์ฌ `๋์ ์ปจํ
์ธ `, ์น ์์ฉ ํ๋ก๊ทธ๋จ ์๋น์ค ์ฒ๋ฆฌํ๋ ๊ฒ
+
+***
+
+## 5. HTTP(HyperText Treansfer protocol)
+
+### 1) HTTP๋?
+
+* ์น ์๋น์ค๋ฅผ ์ํด ์ด์ฉ๋๋ ํ๋กํ ์ฝ๋ก ๋ณด์์ฑ์ด ์ ์ข์
+* ์ํธํ๋์ง ์๋ ์ํ๋ก ์น ๋ณผ ๋ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ
+* ์ธํฐ๋ท์์ ํ์ดํผํ
์คํธ(hypertext) ๋ฌธ์๋ฅผ ๊ตํํ๊ธฐ ์ํ์ฌ ์ฌ์ฉ๋๋ ํต์ ๊ท์ฝ
+* ๋์์๋ฆฌ : POST,GET
+
+### 2) HTTPS(HTTP Secure)๋
+
+* ์ํธํ๋ ์ํ๋ก ์น์ ๋ณผ ๋ HTTP์ Secure์ ๋ปํ๋ s๊ฐ ๋ถ์ด HTTPS๋ผ๊ณ ํจ
+
+***
+
+## 7. ํ๋กํ ์ฝ(Protocol)
+
+### 1) ํ๋กํ ์ฝ์ด๋?
+
+* ํต์ ํ๋กํ ์ฝ ๋๋ ํต์ ๊ท์ฝ์ ์ปดํจํฐ๋ ์๊ฑฐ๋ฆฌ ํต์ ์ฅ๋น ์ฌ์ด์์ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์์๊ณผ ๊ท์น์ ์ฒด๊ณ, ํต์ ๊ท์ฝ ๋ฐ ์ฝ์
+* ํฐ ๋ง๋ฆด์ ์ปดํจํฐ๊ฐ **๋ฉ์ธ์ง๋ฅผ ์ ๋ฌํ๊ณ , ๋ฉ์ธ์ง๊ฐ ์ ๋๋ก ๋์ฐฉํ๋์ง ํ์ธํ๋ฉฐ, ๋์ฐฉํ์ง ์์์ ๊ฒฝ์ฐ ๋ฉ์ธ์ง๋ฅผ ์ฌ์ ์กํ๋ ์ผ๋ จ์ ๋ฐฉ๋ฒ**์ ๊ธฐ์ ์ ์์ด๋ก ํ๋กํ ์ฝ์ด๋ผ๊ณ ํ๋ค.
+* ํต์ ์ ์ํด ํ๋กํ ์ฝ์ด ๊ฐ์ ธ์ผ ํ๋ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ฅ์๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ, ์ ์ด ๊ธฐ๋ฅ, ๊ด๋ฆฌ์ ๊ธฐ๋ฅ
+
+### 2) ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ ์์
+
+* `๊ตฌ๋ฌธ(Syntax)` : ์ ์กํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ํ์(Format), ๋ถํธํ(Coding), ์ ํธ ๋ ๋ฒจ(Singnal Level) ๋ฑ์ ๊ท์
+* `์๋ฏธ(Semantics)` : ๋ ๊ธฐ๊ธฐ๊ฐ์ ํจ์จ์ ์ด๊ณ ์ ํํ ์ ๋ณด ์ ์ก์ ์ํ ํ์กฐ ์ฌํญ๊ณผ ์ค๋ฅ ๊ด๋ฆฌ๋ฅผ ์ํ **์ ์ด ์ ๋ณด๋ฅผ ๊ท์ **
+* `์๊ฐ(Timing)` : ๋ ๊ธฐ๊ธฐ ๊ฐ์ ํต์ ์๋, ๋ฉ์ธ์ง์ ์์ ๋ฑ์ ๊ท์
+
+### 3) ํ๋กํ ์ฝ ์ข
๋ฅ
+
+
+
+***
+
+## 8. ํฌํธ(Port)
+
+* ๋คํธ์ํฌ ์์์ ํน์ PC๋ฅผ ๋ํ๋ด๋ IP ์ฃผ์์ ๊ทธ ์ฃผ์์ ์ง์
ํ ์ ์๋ ์ ํด์ง ํต๋ก
+ * IP ์ฃผ์ : ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ํน์ PC์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ ์ฒด๊ณ
+* IP ๋ด์์ **์ ํ๋ฆฌ์ผ์ด์
์ํธ ๊ตฌ๋ถ(ํ๋ก์ธ์ค ๊ตฌ๋ถ)์ ์ํด ์ฌ์ฉํ๋ ๋ฒํธ**
+* ์ฃผ๋ก ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ
+* ์ด๋ฏธ ์ฌ์ฉ ์ค์ ํฌํธ๋ ์ค๋ณตํด์ ์ฌ์ฉํ ์ ์๋ค.
+* **ํฌํธ ๋ฒํธ๋ 0\~ 65,535 ๊น์ง ์ฌ์ฉํ ์ ์๋ค.**
+* **ํฌํธ ๋ฒํธ**
+ * IP ์ฃผ์๊ฐ ๊ฐ๋ฆฌํค๋ PC์ ์ ์ํ ์ ์๋ ํต๋ก
+ * `์ ์๋ ค์ง ํฌํธ ๋ฒํธ`
+ * 22 : SSH
+ * 80 : HTTP
+ * 443 : HTTPS
+
+#### ์น ์๋น์ค์ ์ด์ฉ๋๋ ํฌํธ๋ฒํธ
+
+* 80๋ฒ ํฌํธ(์ค์ ์์ฉํ๋ ์๋น์ค ์ ๊ณต ์ ์ด์ฉ)
+* ์ถ์ฒ
+
+[https://hanamon.kr/๋คํธ์ํฌ-๊ธฐ๋ณธ-ip-์ฃผ์์-ํฌํธ-port/](https://hanamon.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EB%B3%B8-ip-%EC%A3%BC%EC%86%8C%EC%99%80-%ED%8F%AC%ED%8A%B8-port/)
+
+***
+
+## 9. ์ ์ ์น ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋์ ์น ํ๋ก๊ทธ๋๋ฐ
+
+### 1) ์ ์ ์น ํ๋ก๊ทธ๋๋ฐ
+
+* ์ฃผ์ด์ง HTML ํ์ผ์ ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํจ
+
+### 2) ๋์ ์น ํ๋ก๊ทธ๋๋ฐ
+
+* ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋, ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํ์ด์ง ์์ฑํด์ ๋ณด์ฌ์ค
+
+#### CGI
+
+* ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์๋ค์ด๊ธฐ ์ํด `