์ฝ๋ฉ ํ ์คํธ์ ์ ํ
์จ๋ผ์ธ ์ฝ๋ฉ ํ ์คํธ์ ์คํ๋ผ์ธ ์ฝ๋ฉ ํ ์คํธ๋ก ๊ตฌ๋ถ๋๋ค.
์จ๋ผ์ธ ์ฝ๋ฉ ํ ์คํธ์ ๊ฒฝ์ฐ ์ฃผ์ด์ง ์๊ฐ ๋ด์ ์์์๊ฐ ์ฌ์ดํธ์ ์ ์ํด ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ํด๋ต์ ์์ค ์ฝ๋ ํํ๋ก ์์ฑํ์ฌ ์ ์ถํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋๋ถ๋ถ์ ์ฝ๋ฉ ํ ์คํธ๋ ์๊ณ ๋ฆฌ์ฆ ๋ํ์์๋ ํ ์คํธ๊ฐ ๋๋ ํ์ ์ฐธ๊ฐ์๋ค์ด ์ ์ถํ ์์ค์ฝ๋๋ฅผ ๋์กฐํ์ฌ ๋ถ์ ํ์๋ฅผ ์ ์ง๋ฅธ ์ฌ๋์ด ์๋์ง ํ์ธํ๋ค.
๋ฐ๋ผ์, ์ธํฐ๋ท์์ ์ฐธ๊ณ ํ ๋งํ ์์ค์ฝ๋๋ฅผ ์ฐพ๋๋ผ๋ ํ์ํ ๋ด์ฉ๋ง ํ์ธํ๊ณ ์ด๋ฅผ ํ์ฌ ํ๊ณ ์๋ ๋ฌธ์ ์ ์ ์ฉ์ด ๊ฐ๋ฅํ๋๋ก ์์ ๋ง์ ์์ค ์ฝ๋๋ก ํํํ๋ ์์ฑ ๋ฅ๋ ฅ๋ ์ค์ํ๋ค.
์ค์ต ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
๋ฆฌํ๋ฆฟ์ ์จ๋ผ์ธ ๋ฌด๋ฃ ๊ฐ๋ฐ ํ๊ฒฝ์ด๋ค. ๋ฆฌํ๋ฆฟ์ ํตํด ์ฝ๋๋ฅผ ์์ฑํ ํ ๊น์ ์ ์ฅํ์ฌ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์ถ์ฒํ๋ค.
๋ณต์ก๋
- ์๊ฐ ๋ณต์ก๋ : ์๊ณ ๋ฆฌ์ฆ์ ์ํด ํ์ํ ์ฐ์ฐ์ ํ์
- ๊ณต๊ฐ ๋ณต์ก๋ : ์๊ณ ๋ฆฌ์ฆ์ ์ํด ํ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์.
-> ๋ณ ๋ค๋ฅธ ์ธ๊ธ์ด ์๋ค๋ฉด '๋ณต์ก๋'๋ ์๊ฐ ๋ณต์ก๋๋ฅผ ์๋ฏธํ๋ค. - ๋น ์ค(Big-O) ํ๊ธฐ๋ฒ : ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๋ ํญ๋ง์ ๊ณ ๋ คํ๋ ํ๊ธฐ๋ฒ์ด๋ค. ๋ค์ ๋งํด ํจ์์ ์ํ๋ง์ ๋ํ๋ธ๋ค.
๋น ์ค ํ๊ธฐ๋ฒ | ๋ช ์นญ |
O(1) | ์์ ์๊ฐ |
O(logN) | ๋ก๊ทธ ์๊ฐ |
O(N) | ์ ํ ์๊ฐ |
O(NlogN) | ๋ก๊ทธ ์ ํ ์๊ฐ |
O(N^2) | ์ด์ฐจ ์๊ฐ |
O(N^3) | ์ผ์ฐจ ์๊ฐ |
O(2^N) | ์ง์ ์๊ฐ |
์ฐ์ฐ ํ์๊ฐ 10์ต์ ๋์ด๊ฐ๋ฉด C์ธ์ด ๊ธฐ์ค์ผ๋ก ํต์ 1์ด์ ์๊ฐ์ด ์์๋๋ค.(ํ์ด์ฌ์ ๋ ์ค๋ ๊ฑธ๋ฆผ.)
์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ์์ ์๊ฐ์ ํ์ 1~5์ด๊ฐ๋์ด๋ฏ๋ก ๋ณดํต ์ฐ์ฐ ํ์๊ฐ 10์ต์ ๋์ด๊ฐ๋ฉด ์ค๋ต ํ์ ์ ๋ฐ์ ์ ์๋ค.
๋ฐ๋ผ์, ๋ฌธ์ ์ ์กฐ๊ฑด์ ํ์ธํ ๋ค์ ์ฌ์ฉํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์ขํ ๋๊ฐ๋ ์ ๋ต์ ์ฑํํ๊ธฐ๋ ํ๋ค.
(์ ํ์๊ฐ์ด 1์ด์ธ ๋ฌธ์ ์ ๊ฒฝ์ฐ,
N์ ๋ฒ์๊ฐ 500์ธ ๊ฒฝ์ฐ, ์๊ฐ ๋ณต์ก๋๊ฐ O(N^3)์ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ์ ๋ฌธ์ ํ ์ ์์.
N์ ๋ฒ์๊ฐ 100,000์ธ ๊ฒฝ์ฐ, ์๊ฐ ๋ณต์ก๋๊ฐ O(NlogN)์ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ์ ๋ฌธ์ ํ ์ ์์.)
- ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ธก์
import time
start_time = time.time() #์ธก์ ์์
#ํ๋ก๊ทธ๋จ ์์ค ์ฝ๋
end_time = time.time() #์ธก์ ์ข
๋ฃ
print("time : ", end_time - start_time) #์ํ ์๊ฐ ์ถ๋ ฅ
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์
- ์ง๋ฌธ ์ฝ๊ธฐ, ์ปดํจํฐ์ ์ฌ๊ณ
- ์๊ตฌ์ฌํญ(๋ณต์ก๋) ๋ถ์
- ๋ฌธ์ ํด๊ฒฐ ์ํ ์์ด๋์ด ์ฐพ๊ธฐ
- ์์ค์ฝ๋ ์ค๊ณ ๋ฐ ์ฝ๋ฉ
-> ๋๋ถ๋ถ ํต์ฌ ์์ด๋์ด ์บ์น ์ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ ํํ๋ก ์ถ์ ํ๋ค.
์ฑ์ฉ ํ๋ก์ธ์ค - p.70
- ๋๊ธฐ์ ์ ์ฝ๋ฉ ํ ์คํธ๋ฅผ, ์คํํธ์ ์ ๊ธฐ์ ๋ฉด์ ์ ๋ ๋น์ค์ ๋๋ค.
๋๊ธฐ์
์ ์ ์
์ฌ์์๊ฒ ํฌ์ํ ์๊ฐ์ , ๊ธ์ ์ ์ฌ์ ๊ฐ ์๋ ํฐ๋ผ ๋น์ฅ ํน์ ๊ธฐ์ ์ ๋ชฐ๋ผ๋ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋๋ฉด ํฅํ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฌ๋, ์คํํธ์
์ ์ง์์ ์ ๋ฐํ ๋ค์ ๋ฐ๋ก ์ค๋ฌด์ ํฌ์
ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์ ๋ฉด์ ์ ์ค์ ์ ๋๊ณ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ์ ๋ํ ๊ฒฝํ์ด ์๋์ง ํ์ธํ๋ค.
๊ธฐ์ ๋ฉด์ ์ ๋ํ ์ ํ - p.72
- ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด์ ์ง์์๋ต ํ์
- ๊ธฐ์ ๋ฉด์ ์ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ. ์ฑ ์ ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ฅผ ํ๊ณ ๊ด๋ จ ์๊ณ ๋ฆฌ์ฆ ์๋ฆฌ๋ฅผ ์์ ํ ์๊ธฐ ๊ฒ์ผ๋ก ๋ง๋ค์ด๋ผ.
- ์ด๋ค ์ํฉ์์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋์ง ์ ๊ธฐ์ตํ๊ณ ์ตํ๋ผ.
- ์๋ก ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๋น๊ตํ์ฌ ํน์ ํ ์ํฉ์์ ๋ฌด์์ด ๋ ์ข์์ง๋ฅผ ์ค๋ช ํ ์ ์์ด์ผ ํ๋ค. - ํฌํธํด๋ฆฌ์ค ์ง์ ์๋ต
- ์คํํธ์ ์ ๊ฒฝ์ฐ์๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ ๊ฒฝํ์ ํ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ผ๋๋ค. (๋น์ฅ ํฌ์ ๋์ด์ผํ๋ฏ๋ก)
- ๊ณต๋ถํ๋ฉด์ ๋ง๋๋ ํ ์ด ํ๋ก์ ํธ๋ฅผ ์ ๋ฆฌํ์ฌ ํฌํธํด๋ฆฌ์ค๋ก ๋ง๋ค์ด ๋๊ณ , ์ด๋ฅผ ๋ค๋ฅธ ์ฌ๋์ด ๋ณด๊ธฐ ์ข๊ฒ ๋ฌธ์ํํด๋ผ.
- 1~2์ฅ์ ๋ถ๋์ผ๋ก ๊ฐ๋ฐ ๊ณผ์ ์ ๋ฌธ์๋ก ์ ๋ฆฌํด๋๊ณ ํ ํ๋ก์ ํธ๋ฉด ๋ณธ์ธ์ด ๋งก์ ์ญํ ๊ณผ ์ด์๋ฅผ ํด๊ฒฐํ๋ฉด์ ๋ฐฐ์ด ๋ด์ฉ ๋ฑ์ ๋ฌธ์์ ๋ด๋๋ก ํ๋ค.
- ์ ์ฒด ์์ค ์ฝ๋๋ฅผ ๊นํ๋ธ์ ์ฌ๋ฆฌ๊ณ ์ด๋ ฅ์์ ๊นํ๋ธ ์ฃผ์๋ฅผ ์ฒจ๋ถํด๋ผ.
- ๋ฐฐํฌ ๊ฒฝํ๊น์ง ์๋ค๋ฉด AWS๋ Google Cloud Platform๊ณผ ๊ฐ์ ์๋น์ค๋ฅผ ์ด์ฉํ๋ค๋ฉด ์ด๊ฒ๋ ์ด๋ ฅ์์ ๊ธฐ์ ํ๋ผ. - ์ปดํจํฐ๊ณตํ ์ง์ ์ง์์๋ต
- ์ด์์ฒด์ ๋ ์ปดํจํฐ ์ํคํ ์ฒ, ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ๋ํ ์ปดํจํฐ๊ณตํ ์ ๋ฐ์ ์ธ ์ง์์ ์ง๋ฌธ.
- ์๊ณ ๋ฆฌ์ฆ์ ์ ์ธํ ์ปดํจํฐ๊ณตํ ์ง์์ ์ฃผ๋ก ์ง๋ฌด์ ์ฐ๊ด๋ ๋ด์ฉ์ ๋ฌผ์ด๋ณด๋ฏ๋ก ๊ด๋ จ ๋ถ์ผ์ ์ง์์ ์ค์ ์ผ๋ก ์์๋ ๊ฒ.
(ex. ์น ๊ฐ๋ฐ ์ง๊ตฐ - GET, POST, TCP, UDP, HTTP, HTTPS ๋ฑ์ ์ฐจ์ด)
- ๊ตญ๋ด ๊ธฐ์ ๋ฉด์ ๊ฐ์ด๋๋ผ์ธ ์ ์ฅ์ ์ฐธ๊ณ
https//github.com/JaeYeopHan/Interview_Question_For_Beginner