Bibi's DevLog ๐ค๐
[Hello Coding ์๊ณ ๋ฆฌ์ฆ] 1. ์๊ณ ๋ฆฌ์ฆ ์๊ฐ ๋ณธ๋ฌธ
[Hello Coding ์๊ณ ๋ฆฌ์ฆ] 1. ์๊ณ ๋ฆฌ์ฆ ์๊ฐ
๋น๋น bibi 2021. 2. 3. 22:26[Hello Coding] ์๊ณ ๋ฆฌ์ฆ 1์ฅ. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ
์๊ณ ๋ฆฌ์ฆ์ด๋?
: ์ด๋ค ์ผ์ํ๊ธฐ ์ํ ๋ช
๋ น์ ์งํฉ.
ํนํ ๋ค๋ฅธ ์ฝ๋๋ณด๋ค ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ฑฐ๋, ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ๊ฒ.
์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ
- ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ๋ค์ ์ฅ๋จ์ ๊ณผ ์ฐจ์ด์ ์ ์์์ผ ํ๋ค.
- ๋จ์ํ ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค.
์ด์ง ํ์
ํ์ ๋ฌธ์ Search
: ์ฃผ์ด์ง ๋ฐ์ดํฐ์์ ์ํ๋ ํญ๋ชฉ์ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์ฐพ์ ๊ฒ์ธ๊ฐ.
์) 1๋ถํฐ 100๊น์ง์ ์ซ์๋ค ์ค '78'์ด๋ผ๋ ์ซ์ ์ฐพ๊ธฐ
๋จ์ ํ์ Simple search
: ์ฒ์๋ถํฐ ํ๋์ฉ ์์๋๋ก ํญ๋ชฉ์ ํ์
์) 1, 2, 3, 4, ... 77, 78 ์์ผ๋ก ํ์ํด 78์ ์ฐพ๋๋ค.
- N๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ์์ ์ต๋ N๋ฒ ๋ง์ ๋ต์ ์ฐพ์ ์ ์๋ค.
์ด์ง ํ์ Binary search
- ์ ๋ ฌ๋ ์์ ๋ฆฌ์คํธ์์,
- ์ํ๋ ์์๊ฐ ์์ผ๋ฉด ๊ทธ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ / ์์ผ๋ฉด null์ ๋ฐํ.
- N๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ์์ ์ต๋
log2 N
๋ฒ ๋ง์ ๋ต์ ์ฐพ์ ์ ์๋ค.
์ด์ง ํ์์ ๋์์๋ฆฌ
: ๋ฆฌ์คํธ์ ์ค๊ฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๊ฐ ๊ฐ๋ณด๋ค ํฐ์ง/์์์ง/๊ฐ์์ง ํ๋จํด, ๋ฒ์๋ฅผ ์ค์ฌ๊ฐ๋ฉด์ ๋ฐ๋ณต ํ์ํ๋ค.
์์)
1๋ถํฐ 100๊น์ง์ ์ซ์๋ค ์ค 57์ ์ธ๋ฑ์ค ์ฐพ๊ธฐ
- 50์ด๋ผ๋ ์ค๊ฐ๊ฐ๋ณด๋ค ํฐ์ง ์์์ง ํ๋จ -> ํฌ๋ค.
- 1-50์ ๋ฒ์์์ ์ ์ธํ ๋ค์, 51-100 ์ ์ค๊ฐ์ธ 75๋ณด๋ค ํฐ์ง ์์์ง ํ๋จํ๋ค. -> ์๋ค.
- 75-100์ ๋ฒ์์์ ์ ์ธํ ๋ค์, 51-74 ์ ์ค๊ฐ์ธ 63๋ณด๋ค ํฐ์ง ์์์ง ํ๋จํ๋ค.
- ... ๋ฅผ ๋ฐ๋ณตํด ๋ต์ ์ฐพ๋๋ค.
1-100 ์ค ์ด๋ค ์ซ์๋ผ๋ ์ต๋ 7๋ฒ ๋ง์ ์ฐพ์ ์ ์๋ค.
์คํ ์๊ฐ running time
์ฐ๋ฆฌ๋ ์๊ฐ์ด๋ ์ ์ฅ๊ณต๊ฐ์ ์ ์ฝํด ์ฃผ๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ฐพ๊ณ ์ถ์ด ํ๋ค.
์ ํ ์๊ฐ linear time
: ๋จ์ํ์๊ณผ ๊ฐ์ด, N๊ฐ ์ค์์ ์ฐพ์ ๋ ์ต๋ N๋ฒ ๋ง์ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ ์ ํ ์๊ฐ์ผ๋ก ์คํ๋๋ค๊ณ ํ๋ค.
๋ก๊ทธ ์๊ฐ logarithmic time
: ์ด์งํ์๊ณผ ๊ฐ์ด, N๊ฐ ์ค์์ ์ฐพ์ ๋ ์ต๋log2 N
๋ฒ ๋ง์ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ ๋ก๊ทธ ์๊ฐ์ผ๋ก ์คํ๋๋ค๊ณ ํ๋ค.
๋น ์ค ํ๊ธฐ๋ฒ Big O notation
: ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ง๋ ๋น ๋ฅธ์ง ๋ํ๋ด๋ ํ๊ธฐ๋ฒ์ด๋ค.
- ์๊ณ ๋ฆฌ์ฆ์ ์๋๋ฅผ ์๊ฐ์ด ์๋ ์ฐ์ฐํ์๊ฐ ์ด๋ป๊ฒ ์ฆ๊ฐํ๋์ง๋ก ์ธก์ ํ๋ค.
์ฆ ์๊ณ ๋ฆฌ์ฆ์ด ๋์ํ๊ธฐ ์ํด ํ์ํ ์ต๋ ์ฐ์ฐ ํ์๋ฅผ ๋ํ๋ธ๋ค. - ๋น
์ค ํ๊ธฐ๋ฒ์ ์ต์
์ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ธ๋ค.
๋จ์ํ์์ ๊ฒฝ์ฐ) ์๋ฌด๋ฆฌ ๋๋ ค์ ธ๋O(n)
๋ณด๋ค ๋๋ ค์ง์ง ์์์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด..
๋ฆฌ์คํธ ํฌ๊ธฐ๊ฐ n์ผ ๋ ์ด๋ค ์์๋ฅผ ์ฐพ์ผ๋ ค๋ฉด
๋จ์ ํ์
: n๋ฒ ์ฐ์ฐํด์ผ ํ๋ค -O(n)
๋งํผ ๊ฑธ๋ฆฐ๋ค๊ณ ํ๊ธฐํ๋ค.
(O(n)
: n์ด๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ํด n๋ฒ ์ฐ์ฐํด์ผ ํจ์ ์๋ฏธ)์ด์ง ํ์
: log2 n๋ฒ ์ฐ์ฐํด์ผ ํ๋ค -O(log n)
๋งํผ ๊ฑธ๋ฆฐ๋ค๊ณ ํ๊ธฐํ๋ค.
(O(log n)
: n์ด๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ํดlog2 n
๋ฒ ์ฐ์ฐํด์ผ ํจ์ ์๋ฏธ)
๋น ์ค ํ๊ธฐ๋ฒ์์ log๋..
๋น
์ค ํ๊ธฐ๋ฒ์ ๋ํ๋ ๋ชจ๋ log
ํจ์๋ log2
(๋ฐ์ด 2์ธ ๋ก๊ทธ)๋ฅผ ๋ปํ๋ค.
๋ง์ด ์ฌ์ฉํ๋ ๋น ์ค ์คํ์๊ฐ
๋ง์ด ์ฌ์ฉํ๋ ๋น ์ค ์คํ์๊ฐ์ ๋ค์ฏ ๊ฐ๋ง ์์๋ณธ๋ค.
O(log n)
, ๋ก๊ทธ ์๊ฐ
: ๋ค์ฏ ๊ฐ ์ค ๊ฐ์ฅ ๋น ๋ฅด๋ค.
์ด์ง ํ์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ.O(n)
, ์ ํ ์๊ฐ
: ๋ค์ฏ ๊ฐ ์ค ๋ ๋ฒ์งธ๋ก ๋น ๋ฅด๋ค.
๋จ์ ํ์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ.O(n * log n)
: ๋ค์ฏ ๊ฐ ์ค ์ธ ๋ฒ์งธ๋ก ๋น ๋ฅด๋ค.
ํต ์ ๋ ฌ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ.O(n2)
(n์ ๊ณฑ)
: ๋ค์ฏ ๊ฐ ์ค ๋ค ๋ฒ์งธ๋ก ๋น ๋ฅด๋ค.
์ ํ ์ ๋ ฌ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ.O(n!)
(nํฉํ ๋ฆฌ์ผ)
: ๋ค์ฏ ๊ฐ ์ค ๋ค์ฏ ๋ฒ์งธ๋ก ๋น ๋ฅด๋ค (๊ฐ์ฅ ๋๋ฆฌ๋ค).
์ธํ์ ๋ฌธ์ ์ ๊ฐ์ ๊ฒฝ์ฐ.
'ํ๋ก๊ทธ๋๋ฐ > Algorithm ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Hello Coding ์๊ณ ๋ฆฌ์ฆ] 4. ํต ์ ๋ ฌ (0) | 2021.07.01 |
---|---|
[Hello Coding ์๊ณ ๋ฆฌ์ฆ] 3์ฅ. ์ฌ๊ท (0) | 2021.06.30 |
[Hello Coding ์๊ณ ๋ฆฌ์ฆ] 2์ฅ. ์ ํ ์ ๋ ฌ (0) | 2021.06.30 |
[Hello Coding ์๊ณ ๋ฆฌ์ฆ] 1์ฅ. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ (0) | 2021.06.28 |
ํ๋ก๊ทธ๋๋จธ์ค Lv1 - ์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ (0) | 2021.06.24 |