๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[์๊ณ ๋ฆฌ์ฆ] ๋ณต์ก๋,๋น ์ค ํ๊ธฐ๋ฒ O, ์๋ฃ๊ตฌ์กฐ(๋ฆฌ์คํธ, ์ฐ๊ฒฐ๋ฆฌ์คํธ) ๋ณธ๋ฌธ
[์๊ณ ๋ฆฌ์ฆ] ๋ณต์ก๋,๋น ์ค ํ๊ธฐ๋ฒ O, ์๋ฃ๊ตฌ์กฐ(๋ฆฌ์คํธ, ์ฐ๊ฒฐ๋ฆฌ์คํธ)
์ง์ง์ํ์นด 2022. 9. 28. 16:58220928 ์์ฑ
<๋ณธ ๋ธ๋ก๊ทธ๋ "๊ฐ์ฅ ์ฌ์ด ๋ ํ_์๊ณ ๋ฆฌ์ฆ ์ฒซ๊ฑธ์ํธ python ํธ"์ ์์ ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค>
1๏ธโฃ ๋ณต์ก๋
: ๋ง ๊ทธ๋๋ก ๊ณ์ฐ์ ๋ณต์ก๋
- ์๊ฐ ๋ณต์ก๋ : ์ฒ๋ฆฌ์ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋์ง
- ๊ณต๊ฐ ๋ณต์ก๋ : ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ๊ธฐ์ต ์ฉ๋์ ์ผ๋ง๋ ํ์๋ก ํ๋์ง
2๏ธโฃ ๋ณต์ก๋ ์์ฑ๋ฒ
: ์ ์ฒด ๋ณต์ก๋์ ํฐ ์ํฅ์ ๊ธฐ์น์ง ์๋ ๋ถ๋ถ์ ๋ฌด์ํ๊ณ ๋ณต์ก๋๋ฅผ ์์ฑ
- ๋น ์ค ํ๊ธฐ๋ฒ O
- ์ ๋ ฅ ํฌ๊ธฐ n์ ๋ณํ์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฌ๋ผ์ง
์ฒ๋ฆฌ ์๊ฐ | ์๊ฐ ๋ณต์ก๋ | ์ |
์งง๋ค ↑ . . . . . ↓ ๊ธธ๋ค |
O(1) | ๋ฆฌ์คํธ ์ ๊ทผ |
O(logn) | ์ด์ง ๊ฒ์ | |
O(n) | ์ ํ ๊ฒ์ | |
O(nlogn) | ๋ณํฉ ์ ๋ ฌ | |
O(n^2) | ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ | |
O(n^3) | ํ๋ ฌ ๋ฌธ์ | |
O(2^n) | ๋ฐฐ๋ญ ๋ฌธ์ | |
O(n!) | ์ธํ์ ๋ฌธ์ |
3๏ธโฃ ์ต์ ์๊ฐ ๋ณต์ก๋ & ํ๊ท ์๊ฐ ๋ณต์ก๋
๐ค ์ต์ ์๊ฐ ๋ณต์ก๋
: ๊ฐ์ฅ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๋ณต์ก๋
๐ค ํ๊ท ์๊ฐ ๋ณต์ก๋
: ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ คํ์ฌ ํ๊ท ์ ์ผ๋ก ์ด๋ ์ ๋์ ๋ณต์ก๋๊ฐ ๋ ์ง๋ฅผ ํ๋จํ๋ ์งํ
4๏ธโฃ ์๋ฃ๊ตฌ์กฐ
๐ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
: ํ๋์ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ฟ๋ง ์๋๋ผ, ๋ค์ ์์์ ์ฃผ์(์์น)๋ฅผ ๊ฐ๋๋ค
: ์์์๋ถํฐ ์์๋๋ก ์ฒ๋ฆฌํ๊ฑฐ๋, ๋ฐ์ดํฐ์ ์ถ๊ฐ ์ญ์ ๊ฐ ์์ฃผ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ ํธ
: (์์์ ์์น ๋ฐ์ดํฐ ์ง์ ์ ๊ทผํด ์ฝ๊ฑฐ๋, ๊ฐฑ์ ์ด ๋ง์ผ๋ฉด ๋ฆฌ์คํธ ์ ํธ)
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ฝ์
- ๊ธฐ์กด ๋ฆฌ์คํธ
- ์ฝ์ ์์น ์ดํ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ค๋ก ์์ง์ด๊ธฐ
- n๊ฐ์ ์์๊ฐ ์ ์ฅ๋ ๋ฆฌ์คํธ์ ์๋ก์ด ์์๋ฅผ ์ฝ์ ํ ๋๋ ์ต๋ n๊ฐ์ ์์๊ฐ์ ์ด๋์์ผ์ผ ํจ
- ๋ฆฌ์คํธ์ ์ฝ์ ๋ณต์ก๋๋ O(n)
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ฝ์ ํ ์์น ์์ ์์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ค์ ์์์ ์ฃผ์๋ฅผ A๋ผ ํ๋ฉด, ์ฝ์ ํ ์์์ ๋ค์ ์์ ์ฃผ์๋ก์ A ์ค์
- ์์ ์์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ค์ ์์์ ์ฃผ์๋ฅผ ์ฝ์ ํ ์์์ ์ฃผ์๋ก ๋ณ๊ฒฝ
- ์์๊ฐ ๋ง์์ ธ๋ ์์๊ฐ์ ์ด๋์ด ์์ผ๋ฏ๋ก ์ผ์ ์๊ฐ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฝ์ ๋ณต์ก๋๋ O(1)
- ๊ธฐ์กด ๋ฆฌ์คํธ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ญ์
- ๊ธฐ์กด ๋ฆฌ์คํธ
- ์์๋ฅผ ์ญ์ ํ๋ฉด ์ญ์ ํ ์์น๊ฐ ๋น๋ฏ๋ก, ๊ทธ๋ณด๋ค ๋ค์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์์ผ๋ก ์์ง์ด๊ธฐ
- ๋ฆฌ์คํธ์ ์ญ์ ๋ณต์ก๋๋ O(n)
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ญ์ ํ๋ ์์๊ฐ ๊ฐ์ง๋ ๋ค์ ์์์ ์ฃผ์๋ฅผ ์ด์ ์์๊ฐ ๊ฐ์ง๋ ๋ค์ ์์์ ์ฃผ์๋ก ์ค์ ใ \
- ์์๋ฅผ ์ด๋ํ ํ์๊ฐ ์์
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ญ์ ๋ณต์ก๋๋ O(1)
- ๊ธฐ์กด ๋ฆฌ์คํธ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ฝ๊ธฐ
- ๊ธฐ์กด ๋ฆฌ์คํธ
- ๋งจ ์๋ถํฐ n๋ฒ์งธ ์์๋ฅผ ์ฝ์ ๋ ์์ ๋ฒํธ๋ฅผ ์ง์ ํด ์ฝ๋๋ค
- ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ ์ฝ๊ธฐ์ ๋ณต์ก๋
- ๋ฆฌ์คํธ์ ์ฝ๊ธฐ ๋ณต์ก๋๋ O(1)
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- n๋ฒ์งธ ์์๋ฅผ ์ฝ์ผ๋ ค๋ฉด ๋งจ ์๋ถํฐ ์์๋๋ก n๊น์ง ์ธ๋ฉด์ ์ฝ๊ธฐ
- ์ธ๋ฑ์ค๋ฅผ ์ง์ ํด ์ฝ์. ๋ฐ์ดํฐ์ ์๊ฐ ๋์ด๋ ์๋ก ์ฒ๋ฆฌ ์๊ฐ ์ฆ๊ฐ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฝ๊ธฐ ๋ณต์ก๋๋ O(n)
- ๊ธฐ์กด ๋ฆฌ์คํธ
https://velog.io/@averycode/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%8A%A4%ED%83%9D%ED%81%90%EA%B7%B8%EB%9E%98%ED%94%84-feat.Python ๋ฅผ ์ฐธ๊ณ ํด์ ์ ์์ต๋๋ค. : )
๐ค ํ
: ๋จผ์ ์ง์ด ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ FIFO(First In First Out) ๊ตฌ์กฐ๋ก ์ ์ฅ
- add(item): item์ ๋ฆฌ์คํธ์ ๋๋ถ๋ถ์ ์ถ๊ฐ
- remove(): ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ์ ๊ฑฐ
- peek() : ํ์ ๊ฐ์ฅ ์์ ์๋ ํญ๋ชฉ return
- isEmpty(): ํ๊ฐ ๋น์ด์์๋, true๋ฅผ return
๐ค ์คํ
: ํ์ชฝ ๋์์๋ง ์๋ฃ๋ฅผ ๋ฃ๊ณ ๋บ ์ ์๋ ์ ํ๊ตฌ์กฐ(LIFO : LAST IN FIRST OUT)๋ก ๋ ์๋ฃ๊ตฌ์กฐ
- pop() : ์คํ์ ๊ฐ์ฅ ์(peek)์ ์๋ ํญ๋ชฉ ์ ๊ฑฐ
- push(data) : data ํ๋๋ฅผ ์คํ์ ๊ฐ์ฅ ์(peek)์ ์ถ๊ฐ
- peek() : ์คํ์ ๊ฐ์ฅ ์์ ์๋ ํญ๋ชฉ return
- isEmpty(): ์คํ์ด ๋น์ด์์๋, true๋ฅผ return
๐ค ๊ทธ๋ํ
: ๋ ธ๋(N, node)์ ๊ทธ ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ๋ ์ฃ์ง(E, edge)๋ฅผ ํฌํจํ๋ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ
: ์ฐ๊ฒฐ๋์ด์๋ ๊ฐ์ฒด ๊ด์ ๊ด๊ณ๋ฅผ ํํ
- ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ(Undirected Graph)
- ๊ฐ์ ์ ํตํด์ ์๋ฐฉํฅ์ผ๋ก ๊ฐ ์ ์๋ค.
- (A,B) = (B,A)
- ๋ฐฉํฅ๊ทธ๋ํ (Directed Graph)
- ๊ฐ์ ์ ๋ฐฉํฅ์ฑ์ด ์กด์ฌํ์ฌ ํด๋น ๋ฐฉํฅ์ผ๋ก๋ง ์ ํจ
- A -> B ๋ <A,B>๋ก ํ๊ธฐ
- <A,B> != <B,A>
- ๊ฐ์ค์น ๊ทธ๋ํ (Wighted Graph)
- ๊ฐ์ ์ ๋น์ฉ/๊ฐ์ค์น๊ฐ ํ ๋น๋ ๊ทธ๋ํ
'๐ฉโ๐ป ์ปดํจํฐ ๊ตฌ์กฐ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ์ํ ํ๋ฐ์ง ๋๋ฐ์ง๐พ] ๋น ์ค(Big-O)ํ๊ธฐ๋ฒ (0) | 2023.06.26 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์ ํ๊ฒ์, ์ด์ง๊ฒ์, ํธ๋ฆฌ๊ตฌ์กฐ(BFS, DFS) (0) | 2022.09.30 |
[python] class์ def __init__(self) ์ดํดํ๊ธฐ (0) | 2022.09.07 |
[์๊ณ ๋ฆฌ์ฆ] ํด์ํ ์ด๋ธ_๊ตฌํ (0) | 2022.06.17 |
[์๊ณ ๋ฆฌ์ฆ]ํด์ฌํ ์ด๋ธ_hash table (0) | 2022.06.17 |