ํฐ์คํ ๋ฆฌ ๋ทฐ
[์ ๋ ฌ] 7. ํ ์ด๋ ์ดํดํ๋ ๊ธฐ์ ์ ๋ ฌ(radix sort)
10000COW 2022. 11. 30. 15:22๊ธฐ์ ์ ๋ ฌ
: ์ฃผ์ด์ง ์ ๋ค๊ฐ์ ๋น๊ต๋ฅผ ํ์ง ์๊ณ ๋ฒํท์ ์ฌ์ฉํด ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก,
๋ฎ์ ์๋ฆฌ(1์ ์๋ฆฌ)์์ ๋์ ์๋ฆฌ(10^n ์๋ฆฌ) ์์ผ๋ก ๋ฒํท์ ๋ฃ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ ฌํ๋ค.
์ค์ ๋ก ์ซ์๋ค ๊ฐ์ ๋น๊ต๋ฅผ ํตํด ์ ๋ ฌ์ ํ๋ ๊ฒ์ด ์๋, 0~9๊น์ง์ ๋ฒํท์ด ์๊ณ ์ด ๋ฒํท์ ์ซ์๋ฅผ ๋ฃ์ด๊ฐ๋ฉฐ ๋ถ๋ฅํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์๊ฐ๋ณต์ก๋
O(r*n) : r์ ์ซ์์ ์๋ฆฟ์, n์ ์ ๋ ฌ๋ ์์ ๊ฐฏ์
ํน์ง
1. ์๊ฐ ๋ณต์ก๋์์ ์์ฒญ๋ ์ด์ ์ ๊ฐ๋๋ค. ๋ฌด๋ ค O(N)..
2. ํ์ง๋ง ๊ทธ๋งํผ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ด ํ์ํ๋ค.
[153, 262, 37, 598, 433, 855]๋ฅผ ๊ธฐ์ ์ ๋ ฌ์ ์ด์ฉํด ์ ๋ ฌํด๋ณด์.
๊ฐ์ฅ ๋ฎ์ 1๋ฒ์งธ ์๋ฆฌ๋ถํฐ(1์ ์๋ฆฌ) ๊ฐ์ฅ ๋์ 3๋ฒ์งธ ์๋ฆฌ(100์ ์๋ฆฌ) ์์ผ๋ก ์ ๋ ฌํ๋ค.
๋ค์๊ณผ ๊ฐ์ด 0~9 ๊น์ง ๋ฒํท๋ค์ด ์๋ฆฟ์ ๋ณ๋ก ์๊ณ , ํด๋นํ๋ ์๋ฆฟ์์ ๋ง๊ฒ ๋ฒํท์ ๋ด๊ฒ๋๋ค.
1์ ์๋ฆฌ ์ ๋ ฌ 10์ ์๋ฆฌ ์ ๋ ฌ 100์ ์๋ฆฌ ์ ๋ ฌ
๊ฒฐ๊ณผ์ ์ผ๋ก [37, 153, 262, 433, 598, 855] ๋ก ์ ๋ ฌ๋๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
์์์ ์ฐธ๊ณ ํด์ ์ดํดํ๋ฉด ์ด์ ์๋ฒฝํ ์ดํด๊ฐ ๊ฐ ๊ฒ์ด๋ค.
์์์ ์ค๋ช ํ์๋ฉด,
1์ ์๋ฆฌ ๋ฒํท์ ์๋ค์ ๋ด๊ณ -> ๋ฒํท์ ๋ด๊ธด ์์๋๋ก ๊บผ๋ด์จ๋ค. (1์ ์๋ฆฌ๋ก ์ ๋ ฌ)
์ด ๊บผ๋ด์จ ๊ฒ์ ์ด๋ฒ์ 10์ ์๋ฆฌ ๋ฒํท์ ์๋ค์ ๋ด๊ณ -> ๋ฒํท์ ๋ด๊ธด ์์๋๋ก ๊บผ๋ด์จ๋ค. (10์ ์๋ฆฌ๋ก ์ ๋ ฌ)
์ด ๊บผ๋ด์จ ๊ฒ์ ๋ง์ง๋ง์ผ๋ก 100์ ์๋ฆฌ ๋ฒํท์ ์๋ค์ ๋ด๊ณ -> ๋ฒํท์ ๋ด๊ธด ์์๋๋ก ๊บผ๋ด์จ๋ค. (100์ ์๋ฆฌ๋ก ์ ๋ ฌ)
๊ธฐ์ ์ ๋ ฌ Python ์ฝ๋๋ฅผ ์ดํด๋ณด์.
from collections import deque
def radixSort():
nums = list(map(int, input().split(' ')))
buckets = [deque() for _ in range(10)]
max_val = max(nums)
queue = deque(nums)
digit = 1 # ์๋ฆฟ์
while (max_val >= digit): # ๊ฐ์ฅ ํฐ ์์ ์๋ฆฟ์์ผ ๋ ๊น์ง๋ง ์คํ
while queue:
num = queue.popleft()
buckets[(num // digit) % 10].append(num) # ๊ฐ ์๋ฆฌ์ ์(0~9)์ ๋ฐ๋ผ ๋ฒํท์ num์ ๋ฃ๋๋ค.
# ํด๋น ์๋ฆฟ์์์ ๋ฒํท์ ๋ค ๋ฃ์์ผ๋ฉด, ๋ฒํท์ ๋ด๊ฒจ์๋ ์์๋๋ก ๊บผ๋ด์ ์ ๋ ฌํ๋ค.
for bucket in buckets:
while bucket:
queue.append(bucket.popleft())
print(digit,"์ ์๋ฆฟ ์ ์ ๋ ฌ: ", list(queue))
digit *= 10 # ์๋ฆฟ์ ์ฆ๊ฐ์ํค๊ธฐ
print(list(queue))
์ ๋ ฅ๊ณผ ์ถ๋ ฅ
'๐ง๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ > ์ ๋ ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ ฌ] 8. ํ ์ด๋ ์ดํดํ๋ ๊ณ์ ์ ๋ ฌ(Counting Sort) (0) | 2022.11.30 |
---|---|
[์ ๋ ฌ] 6. ํ ์ ๋ ฌ (0) | 2022.11.30 |
[์ ๋ ฌ] 5. ํต ์ ๋ ฌ (0) | 2022.11.30 |
[์ ๋ ฌ] 2. ์ ํ ์ ๋ ฌ (0) | 2022.11.30 |
[์ ๋ ฌ] 4.๋ณํฉ์ ๋ ฌ(Merge sort) (0) | 2022.11.29 |
- Total
- Today
- Yesterday
- Browser
- React Query
- leetcode
- Python
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- react
- error
- ์๋ฐ์คํฌ๋ฆฝํธ
- DB
- git
- Component
- useState
- ํ์ด์ฌ
- DOM
- mdn
- ํจ์
- ์ ๋ ฌ
- ์๊ณ ๋ฆฌ์ฆ
- zustand
- BOJ
- ๋ธ๋ผ์ฐ์
- ์๋ฃ๊ตฌ์กฐ
- state
- ๋ฆฌ์กํธ
- ๊ทธ๋ํ
- github
- Context API
- JavaScript
- CSS
- ์๋ฌ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |