Ch6 Sorting 6-1
๐ ์ ๋ ฌ(Sorting)
์ ๋ ฌ(Sorting) ์ด๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ํ ๊ธฐ์ค์ ๋ฐ๋ผ ์์๋๋ก ๋์ดํ๋ ๊ฒ.
- ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ๋ฆฌ์ฆ ์ค ํ๋.
- ์ด์ง ํ์์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ด๊ธฐ๋ ํจ.
- ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ์ํฉ์ ๋ฐ๋ผ์ ์ ์ ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ๊ณต์์ฒ๋ผ ์ฌ์ฉ๋จ.
1) ์ ํ ์ ๋ ฌ (Selection Sort)
๋ฐ์ดํฐ๊ฐ ๋ฌด์์๋ก ์ฌ๋ฌ ๊ฐ ์์ ๋, ์ด ์ค์์ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด ๋งจ ์์ ์๋ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๊ณ , ๊ทธ๋ค์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด ์์์ ๋ ๋ฒ์งธ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๋ ๊ณผ์ ์ ๋ฐ๋ณต.
- ๊ฐ์ฅ ์์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก โ๊ฐ์ฅ ์์ ๊ฒ์ ์ ํโ ํ๋ค๋ ์๋ฏธ.
- ๊ฐ์ฅ ์์ ๊ฒ์ ์ ํํด์ ์์ผ๋ก ๋ณด๋ด๋ ๊ณผ์ ์ ๋ฐ๋ณตํด์ ์ํํ๋ค ๋ณด๋ฉด, ์ ์ฒด ๋ฐ์ดํฐ์ ์ ๋ ฌ์ด ์ด๋ฃจ์ด์ง.
์ ํ ์ ๋ ฌ ๊ทธ๋ฆผ ์ค๋ช
์ ํ ์ ๋ ฌ ์์ค์ฝ๋ ๊ตฌํ
array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
for i in range(len(array)):
min_index = i # ๊ฐ์ฅ ์์ ์์์ ์ธ๋ฑ์ค
for j in range(i + 1, len(array)):
if array[min_index] > array[j]:
min_index = j
array[i], array[min_index] = array[min_index], array[i] # ์ค์ํ
print(array)
ํ์ด์ฌ ์ค์์ดํ
# 0 ์ธ๋ฑ์ค์ 1 ์ธ๋ฑ์ค์ ์์ ๊ต์ฒดํ๊ธฐ
array = [3, 5]
array[0], array[1] = array[1], array[0]
print(array)
์คํ ๊ฒฐ๊ณผ
0 1 2 3 4 5 6 7 8 9
์ ํ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋
- ์ ํ ์ ๋ ฌ์ N๋ฒ ๋งํผ ๊ฐ์ฅ ์์ ์๋ฅผ ์ฐพ์์ ๋งจ ์์ผ๋ก ๋ณด๋ด์ผ ํ๋ค.
-
๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ผ์ ์ฌ์ํ ์ค์ฐจ๋ ์์ ์ ์์ง๋ง, ์ ์ฒด ์ฐ์ฐ ํ์๋ ๋ค์๊ณผ ๊ฐ๋ค. ๐ + (๐ - 1) + (๐ - 2) + โฆ + 2
- ์ด๋ (๐ยฒ + ๐ - 2) / 2 ๋ก ํํํ ์ ์๋๋ฐ, ๋น ์ค ํ๊ธฐ๋ฒ์ ๋ฐ๋ผ์ O(Nยฒ) ์ด๋ผ๊ณ ์์ฑํ๋ค.
์ ํ ์ ๋ ฌ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ 10,000๊ฐ ์ด์์ด๋ฉด ์ ๋ ฌ ์๋๊ฐ ๊ธ๊ฒฉํ ๋๋ ค์ง๋ค.
ํ์ด์ฌ์ ๋ด์ฅ๋ ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ด๋ถ์ ์ผ๋ก C ์ธ์ด ๊ธฐ๋ฐ, ๋ค์ํ ์ต์ ํ ํ ํฌ๋์ด ํฌํจ๋์ด ๋น ๋ฅด๊ฒ ๋์ํ๋ค.
์ ํ ์ ๋ ฌ์ ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋นํด ๋งค์ฐ ๋นํจ์จ์ ์ด๋ค.
2) ์ฝ์ ์ ๋ ฌ (Insertion Sort)
์ฒ๋ฆฌ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๊ณจ๋ผ ์ ์ ํ ์์น์ โ์ฝ์ โํ๋ค.
- ์ ํ ์ ๋ ฌ์ ๋นํด ๊ตฌํ ๋์ด๋๊ฐ ๋์ ํธ์ด์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋ ํจ์จ์ ์ผ๋ก ๋์ํ๋ค.
-
ํน์ ํ ๋ฐ์ดํฐ๊ฐ ์ ์ ํ ์์น์ ๋ค์ด๊ฐ๊ธฐ ์ด์ ์, ๊ทธ ์๊น์ง์ ๋ฐ์ดํฐ๋ ์ด๋ฏธ ์ ๋ ฌ๋์ด ์๋ค๊ณ ๊ฐ์ .
- ๋ ๋ฒ์งธ ๋ฐ์ดํฐ๋ถํฐ ์์.
- ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ ๊ทธ ์์ฒด๋ก ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฝ์ ์ ๋ ฌ ๊ทธ๋ฆผ ์ค๋ช
์ฝ์ ์ ๋ ฌ ์์ค์ฝ๋
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): # ์ธ๋ฑ์ค i๋ถํฐ 1๊น์ง ๊ฐ์ํ๋ฉฐ ๋ฐ๋ณตํ๋ ๋ฌธ๋ฒ
if array[j] < array[j - 1]: # ํ ์นธ์ฉ ์ผ์ชฝ์ผ๋ก ์ด๋
array[j], array[j - 1] = array[j - 1], array[j]
else: # ์๊ธฐ๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ฉด ๊ทธ ์์น์์ ๋ฉ์ถค
break
print(array)
์คํ ๊ฒฐ๊ณผ
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
์ฝ์ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋
-
์ฝ์ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋ O(Nยฒ) ์ด๋ฉฐ, ์ ํ ์ ๋ ฌ๊ณผ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
-
์ฝ์ ์ ๋ ฌ์ ํ์ฌ ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์๋ ์ํ๋ผ๋ฉด ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋์ํ๋ค.
-
์ต์ ์ ๊ฒฝ์ฐ O(N)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
-
์คํ ์๊ฐ ์ธก๋ฉด์์ ์ ํ ์ ๋ ฌ์ ๋นํด ๋ ํจ์จ์ .
-
ํ์ํ ๋๋ง ์์น๋ฅผ ๋ฐ๊พธ๋ฏ๋ก
๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์์ ๋
ํจ์ฌ ํจ์จ์ .- ์ ํ ์ ๋ ฌ์ ๋ฌด์กฐ๊ฑด ๋ชจ๋ ์์๋ฅผ ๋น๊ตํ๊ณ ์์น๋ฅผ ๋ฐ๊พผ๋ค.
3) ํต ์ ๋ ฌ (Quick Sort)
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ ํต ์ ๋ ฌ๊ณผ ๋ณํฉ ์ ๋ ฌ์ ๋น ๋ฅด๊ณ , ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ทผ๊ฐ์ด ๋๋ ์๊ณ ๋ฆฌ์ฆ.
- ๊ธฐ์ค ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๊ณ ๊ทธ ๊ธฐ์ค๋ณด๋ค ํฐ ๋ฐ์ดํฐ์ ์์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํต ์ ๋ ฌ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค ๋ฐ์ดํฐ(Pivot)๋ก ์ค์ ํ๋ค.
- ํผ๋ฒ์ ์ค์ ํ๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ถํ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ํต ์ ๋ ฌ์ด ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌ๋ถ๋๋ค.
- ๋ํ์ ๋ฐฉ์์ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ๋ฅผ ํผ๋ฒ์ผ๋ก ํ๋ ํธ์ด ๋ถํ (Hoare partition)
pivot : ํฐ ์ซ์์ ์์ ์ซ์๋ฅผ ๊ตํํ ๋, ๊ตํํ๊ธฐ ์ํ โ๊ธฐ์คโ
- ๋ํ์ ๋ฐฉ์์ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ๋ฅผ ํผ๋ฒ์ผ๋ก ํ๋ ํธ์ด ๋ถํ (Hoare partition)
ํต ์ ๋ ฌ ๊ทธ๋ฆผ ์ค๋ช
ํต ์ ๋ ฌ ์ง๊ด์ ์ดํด
ํต ์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋
- ์ด์์ ์ธ ๊ฒฝ์ฐ ๋ถํ ์ด ์ ๋ฐ์ฉ ์ผ์ด๋๋ค๋ฉด ์ ์ฒด ์ฐ์ฐ ํ์๋ก O(NlogN) ๋ฅผ ๊ธฐ๋ํ ์ ์๋ค.
- ๋๋น X ๋์ด = ๐ ร ๐๐๐๐ = ๐๐๐๐๐
- ์ต์ ์ ๊ฒฝ์ฐ O(Nยฒ) ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
- ์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๋ ๊ฒฝ์ฐ ๋ฉ์ฐ ๋๋ฆฌ๊ฒ ๋์ํ๋ค. (์ฝ์ ๊ณผ ๋ฐ๋)
ํต ์ ๋ ฌ ์์ค์ฝ๋ ๊ตฌํ
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
def quick_sort(array, start, end):
if start >= end: # ์์๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ ์ข
๋ฃ
return
pivot = start # ํผ๋ฒ์ ์ฒซ ๋ฒ์งธ ์์
left = start + 1
right = end
while(left <= right):
# ํผ๋ฒ๋ณด๋ค ํฐ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋๊น์ง ๋ฐ๋ณต
while(left <= end and array[left] <= array[pivot]):
left += 1
# ํผ๋ฒ๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋๊น์ง ๋ฐ๋ณต
while(right > start and array[right] >= array[pivot]):
right -= 1
if(left > right): # ์๊ฐ๋ ธ๋ค๋ฉด ์์ ๋ฐ์ดํฐ์ ํผ๋ฒ์ ๊ต์ฒด
array[right], array[pivot] = array[pivot], array[right]
else: # ์๊ฐ๋ฆฌ์ง ์์๋ค๋ฉด ์์ ๋ฐ์ดํฐ์ ํฐ ๋ฐ์ดํฐ๋ฅผ ๊ต์ฒด
array[left], array[right] = array[right], array[left]
# ๋ถํ ์ดํ ์ผ์ชฝ ๋ถ๋ถ๊ณผ ์ค๋ฅธ์ชฝ ๋ถ๋ถ์์ ๊ฐ๊ฐ ์ ๋ ฌ ์ํ
quick_sort(array, start, right - 1)
quick_sort(array, right + 1, end)
quick_sort(array, 0, len(array) - 1)
print(array)
์คํ ๊ฒฐ๊ณผ
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ํ์ด์ฌ์ ์ฅ์ ์ ์ด๋ฆฐ ๊ตฌํ
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
def quick_sort(array):
# ๋ฆฌ์คํธ๊ฐ ํ๋ ์ดํ์ ์์๋ง์ ๋ด๊ณ ์๋ค๋ฉด ์ข
๋ฃ
if len(array) <= 1:
return array
pivot = array[0] # ํผ๋ฒ์ ์ฒซ ๋ฒ์งธ ์์
tail = array[1:] # ํผ๋ฒ์ ์ ์ธํ ๋ฆฌ์คํธ
left_side = [x for x in tail if x <= pivot] # ๋ถํ ๋ ์ผ์ชฝ ๋ถ๋ถ
right_side = [x for x in tail if x > pivot] # ๋ถํ ๋ ์ค๋ฅธ์ชฝ ๋ถ๋ถ
# ๋ถํ ์ดํ ์ผ์ชฝ ๋ถ๋ถ๊ณผ ์ค๋ฅธ์ชฝ ๋ถ๋ถ์์ ๊ฐ์ ์ ๋ ฌ์ ์ํํ๊ณ , ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ๋ฐํ
return quick_sort(left_side) + [pivot] + quick_sort(right_side)
print(quick_sort(array))
ํต ์ ๋ ฌ๊ณผ ๋ค๋ฅธ ์ ๋ ฌ ๋น๊ต
4) ๊ณ์ ์ ๋ ฌ (Count Sort)
ํน์ ํ ์กฐ๊ฑด์ด ๋ถํฉํ ๋๋ง ์ฌ์ฉํ ์ ์์ง๋ง ๋งค์ฐ ๋น ๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
- ์์ ๋ค๋ค๋ 3๊ฐ์ง ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ฒ๋ผ ์ง์ ๋ฐ์ดํฐ์ ๊ฐ์ ๋น๊ตํ ๋ค์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ฉฐ ์ ๋ ฌํ๋ ๋ฐฉ์(๋น๊ต ๊ธฐ๋ฐ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ)์ด ์๋๋ค.
- ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๐, ๋ฐ์ดํฐ(์์) ์ค ์ต๋๊ฐ์ด ๐พ์ผ ๋ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ํ ์๊ฐ O(N + K) ๋ฅผ ๋ณด์ฅํ๋ค.
- ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ ํ๋์ด ์์ ๋์ ํํด์ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๋งค์ฐ ๋ง๋๋ผ๋ ๋น ๋ฅด๊ฒ ๋์.
- ๊ณ์ ์ ๋ ฌ์ ๋ณ๋์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๊ณ ๊ทธ ์์ ์ ๋ ฌ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๋ ํน์ง.
- ์ผ๋ฐ์ ์ผ๋ก max์ min์ ์ฐจ์ด๊ฐ 1,000,000์ ๋์ง ์์ ๋, ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ex) [0, 999999] ์ด๋ฐ ์ํฉ์์๋ ๊ณ์ ์ ๋ ฌ ์ฌ์ฉ x => ๋ฆฌ์คํธ์ ํฌ๊ธฐ๊ฐ 100๋ง ๊ฐ๊ฐ ๋๋๋ก ์ ์ธํด์ผ ํด์ ๋นํจ์จ์ ์.
- ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๊ฐ ๋ฑ์ฅํ ๋ ์ ํฉ
- ex) ์ฑ์ ์ ๊ฒฝ์ฐ 100์ ์ ๋ง์ ํ์์ด ์ฌ๋ฌ ๋ช ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๊ฒฝ์ฐ์์ ํจ์จ์ ์.
๊ณ์ ์ ๋ ฌ ๊ทธ๋ฆผ ์ค๋ช
๊ณ์ ์ ๋ ฌ ๊ฒฐ๊ณผ
๊ณ์ ์ ๋ ฌ ์์ค์ฝ๋ ๊ตฌํ
# ๋ชจ๋ ์์์ ๊ฐ์ด 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๊ณ ๊ฐ์
array = [7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2]
# ๋ชจ๋ ๋ฒ์๋ฅผ ํฌํจํ๋ ๋ฆฌ์คํธ ์ ์ธ (๋ชจ๋ ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํ)
count = [0] * (max(array) + 1)
for i in range(len(array)):
count[array[i]] += 1 # ๊ฐ ๋ฐ์ดํฐ์ ํด๋นํ๋ ์ธ๋ฑ์ค์ ๊ฐ ์ฆ๊ฐ
for i in range(len(count)): # ๋ฆฌ์คํธ์ ๊ธฐ๋ก๋ ์ ๋ ฌ ์ ๋ณด ํ์ธ
for j in range(count[i]):
print(i, end=' ') # ๋์ด์ฐ๊ธฐ๋ฅผ ๊ตฌ๋ถ์ผ๋ก ๋ฑ์ฅํ ํ์๋งํผ ์ธ๋ฑ์ค ์ถ๋ ฅ
์คํ ๊ฒฐ๊ณผ
0 0 1 1 2 2 3 4 5 5 6 7 8 9 9
5) ํ์ด์ฌ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
sorted()
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
result = sorted(array)
print(result)
sort()
array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8]
array.sort()
print(array)
key๋ฅผ ํ์ฉํ ์ฝ๋
array = [('๋ฐ๋๋', 2), ('์ฌ๊ณผ', 5), ('๋น๊ทผ', 3)] # ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๊ฐ ํํ๋ก ๊ตฌ์ฑ
def setting(data):
return data[1] # ๋ ๋ฒ์งธ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์
result = sorted(array, key=setting)
print(result) # [('๋ฐ๋๋', 2), ('๋น๊ทผ', 3), ('์ฌ๊ณผ', 5)]
์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๊ฐ๋ณต์ก๋ ์ด๋ฏธ ์ ์์ฑ๋ ํจ์์ด๋ฏ๋ก ์ง์ ํต ์ ๋ ฌ์ ๊ตฌํํ ๋๋ณด๋ค ํจ์ฌ ํจ๊ณผ์
- ์ต์ ์ ๊ฒฝ์ฐ์๋ O(NlogN) ๋ณด์ฅ.
-
๋ณํฉ ์ ๋ ฌ๊ณผ ์ฝ์ ์ ๋ ฌ์ ์์ด๋์ด๋ฅผ ๋ํ ์๊ณ ๋ฆฌ์ฆ.
๋จ์ํ ์ ๋ ฌํด์ผ ํ๋ ์ํฉ์์๋ ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ , ๋ฐ์ดํฐ์ ๋ฒ์๊ฐ ํ์ ๋์ด ์์ผ๋ฉฐ ๋ ๋น ๋ฅด๊ฒ ๋์ํด์ผ ํ ๋๋ ๊ณ์ ์ ๋ ฌ์ ์ฌ์ฉ
์ฝ๋ฉ ํ ์คํธ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
1. ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ ์ ์๋ ๋ฌธ์
- ๋จ์ํ ์ ๋ ฌ ๊ธฐ๋ฒ์ ์๊ณ ์๋์ง ๋ฌผ์ด๋ณด๋ ๋ฌธ์ .
- ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฝ๊ฒ ํ ์ ์์.
2. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฆฌ์ ๋ํด ๋ฌผ์ด๋ณด๋ ๋ฌธ์
- ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ํต ์ ๋ ฌ ๋ฑ์ ์๋ฆฌ๋ฅผ ์์์ผ ํจ.
3. ๋ ๋น ๋ฅธ ์ ๋ ฌ์ด ํ์ํ ๋ฌธ์
- ํต ์ ๋ ฌ ๊ธฐ๋ฐ์ ์ ๋ ฌ ๊ธฐ๋ฒ์ผ๋ก๋ ํ ์ ์๋ค. ๊ณ์ ์ ๋ ฌ ๋ฑ์ ๋ค๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๊ฑฐ๋, ๊ธฐ์กด์ ์๋ ค์ง ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐ์ ์ธ ๊ฐ์ ์ ๊ฑฐ์ณ์ผ ํจ.
๋๊ธ๋จ๊ธฐ๊ธฐ