๐์์ง 2์ฐจ ์ ๋ฆฌ๊ฐ ํ์ํ ๊ธ!
๐ ์ ์ฐจ์งํฅ / ๊ฐ์ฒด์งํฅ / ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ฌด์์ด๊ณ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ?
ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ข ๋ฅ
๐์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ (๊ตฌ์กฐ์ )
- ์คํ ์์, ์ ์ฐจ๊ฐ ์ค์ , ํ๋ก๊ทธ๋จ ์ ์ฒด๊ฐ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์
- ์ ์ฒด ๊ธฐ๋ฅ์ ๋์์ ๊ณ ๋ คํด ๋จ๊ณ๋ณ๋ก ๊ธฐ๋ฅ์ ๊ตฌํ
- ์ปดํจํฐ์ ์ฒ๋ฆฌ๊ตฌ์กฐ์ ์ ์ฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์งํฅ๋ณด๋ค ์๋ ฅ์ด ๋น ๋ฅด๋ค.
- ํ๋ก์ ํธ๊ฐ ์ปค์ง๋ฉด ๊ทธ๋งํผ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๋ค
- ์์๋ฅผ ๋ฐ๊พธ๊ธฐ ์ด๋ ค์ฐ๋ฉฐ, ์ค๋ณต ์ฝ๋์ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค. ๋๋ฒ๊น ๋ํ ์ด๋ ต๋ค
- ๋ํ์ ์ธ ์ธ์ด C
๐๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ์ฒด๋ค์ ์ข ๋ฅ์ ์์ฑ์ ์ค์
- ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ ์์ผ ์ํ์ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ๊ฐ์ฒด๋ฅผ ์ค๊ณํ์ฌ ๊ฐ ๊ฐ์ฒด์ ์ํธ์์ฉ์ ์ค๊ณํ๋ ๋ฐฉ์
- ํน์ง์ 4๊ฐ์ง: ์บก์ํ, ์์, ์ถ์ํ, ๋คํ์ฑ
- ์ ์ฐจ์งํฅ๋ณด๋ค๋ ์๋๊ฐ ๋๋ฆฌ์ง๋ง ๊ตฌ์กฐ ํ์ ์ด ์ฝ๋ค
- ๊ฐ์ฒด๋ก ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์์ฐ์ฑ์ ๋์ด๋ฉฐ, ์ ์ง๋ณด์๊ฐ ์ฝ๋ค.
- ๋ํ์ ์ธ ์ธ์ด๋ก ์๋ฐ, ํ์ด์ฌ, C++ ๋ฑ์ด ์๋ค.
๐ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ์๋ฃ์ฒ๋ฆฌ๋ฅผ ์ํ์ ํจ์์ ๊ณ์ฐ์ผ๋ก ์ทจ๊ธํด ์ํ์ ๊ฐ๋ณ ์ํ๋ฅผ ๋ฉ๋ฆฌํ๋ค.
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ํ๊ณผ ๋ฐ์ ํ ์ฐ๊ด์ด ์์ด ๋ฐฐ์ฐ๋ ๊ฒ์ด ์ด๋ ต์ง๋ง ์ต๊ทผ AI,๋น ๋ฐ์ดํฐ ๋ฑ์ผ๋ก ๋ฐฉ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ณ๋ ฌ์ ์ผ๋ก ๊ณ์ฐํ ํ์๋ก ๊ฐ๊ด๋ฐ๊ธฐ ์์
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ง์ ์ํ ์ธ์ด๋ ์กด์ฌํ์ง๋ง ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง์ ์ ๋ชฉํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์๋ค. ์๋ฐ๋ ๊ทธ ์ค ํ๋์ด๋ค.
- ์ด๋ค ๊ฐ์ ๋ฃ์ด๋ ํญ์ ๋์ผํ ๊ฒฐ๊ณผ ๊ฐ์ ๊ฐ๋ ์์ํจ์๋ฅผ ๊ฐ๋๋ค. ํจ์์์ ์ธ๋ถ ์ํ๊ฐ์ ์ฐธ์กฐํ๊ฑฐ๋ ์ธ๋ถ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฑด ์์ ํจ์๊ฐ ์๋๋ค.
- ๋ฐ์ดํฐ๋ ๋น์ํ์ฑ,๋ถ๋ณ์ฑ์ ๊ฐ์ ธ์ผ ํ๋ค. ํจ์์ ์ธ์๋ก ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฑด ํจ์ํ์ด ์๋๋ฉฐ, ํจ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ์ด ํ์ํ๋ค๋ฉด ๊ทธ๊ฑด ์๋ณธ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋๊ฒ ์๋๋ผ ๋ณต์ฌ๋ณธ์ผ๋ก ์๋กญ๊ฒ ๋ง๋ค์ด ๋ณ๊ฒฝํ์ฌ ๋ฐํํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค.
- ์ ์ธํ ํจ์๋ก if, switch, for ๋ฑ์ ๋ช ๋ น๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ํจ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
- ์๋ฐ์์๋ JDK8 ๋ถํฐ StreamAPI์ ํจ์ํ ์ธํฐํ์ด์ค ๋๋ค๋ฅผ ์ ๊ณตํ๊ณ ์๋ค.
๐์ธํฐํ๋ฆฌํฐ๋
๐๊ฐ์ฒด๋
๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๋๋ ์๋ณ์์ ์ํด ์ฐธ์กฐ๋๋ ๊ณต๊ฐ์ ์๋ฏธํ๋ฉฐ ๊ฐ์ ์ ์ฅ ํ ๋ณ์์ ์์ ์ ์ํ ํ ๋ฉ์๋๋ฅผ ์๋ก ์ฐ๊ด๋ ๊ฒ๋ค๋ผ๋ฆฌ ๋ฌถ์ด์ ๋ง๋ ๊ฒ์ ๊ฐ์ฒด๋ผ๊ณ ํ ์ ์๋ค.
๐StreamAPI
๐๋๋ค
https://choirim.tistory.com/69
https://www.youtube.com/watch?v=4ezXhCuT2mw
๐ ์๊ณ ๋ฆฌ์ฆ์์ ‘์๊ฐ๋ณต์ก๋‘์ ‘๊ณต๊ฐ๋ณต์ก๋’๋ ๋ฌด์์ธ๊ฐ? ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ๋ค์ ์ ์ค์ํ๊ฐ?
๐์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ ( ์ค์ ๋ก๋ ์ฐ์ฐ ์คํ ํ์ )
์ต๊ณ ์ฐจํญ์ ์ ์ธํ ๋ชจ๋ ํญ๊ณผ ์ต๊ณ ์ฐจํญ์ ๊ณ์๋ฅผ ์ ์ธ์ํจ๋ค.
๐๊ณต๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ๋๋ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ( ๊ณ ์ ๊ณต๊ฐ๊ณผ ๊ฐ๋ณ ๊ณต๊ฐ์ ๋ํด ๊ตฌํจ )
S(P) = c + Sp(n)c: ๊ณ ์ ๊ณต๊ฐ (์ฝ๋ ์ ์ฅ ๊ณต๊ฐ, ๋จ์ ๋ณ์, ๊ณ ์ ํฌ๊ธฐ์ ๊ตฌ์กฐ ๋ณ์, ์์)Sp(n): ๊ฐ๋ณ ๊ณต๊ฐ (๋์ ์ผ๋ก ํ์ํ ๊ณต๊ฐ)
๐๊ณตํต์
๋๋ค ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ๋ถ์ ๋ฐฉ๋ฒ. ํ๋์จ์ด์ ์๊ด์์ด ์๊ณ ๋ฆฌ์ฆ ๊ทธ ์์ฒด ๋ง์ ํ๊ฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ.
๐ํ๊ธฐ๋ฒ
์ ๊ทผ์ ํ๊ธฐ๋ฒ
Big-O (๋น ์ค): ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ํ๊ธฐ, ์ํ
Big-Omega (๋น ์ค๋ฉ๊ฐ): ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ํ๊ธฐ, ํํ
Big-Theta (๋น ์ธํ): ํ๊ท , ์ํ๊ณผ ํํ์ ๊ต์งํฉ
๐์๋ก ๊ด๊ณ
์๋ก ๋ฐ๋น๋ก ํ๋ ๊ฒฝํฅ์ด ์๋ค
๐์ ์ค์ํ ๊น?
์๊ณ ๋ฆฌ์ฆ ๋ถ์์ ๋น ๋ฅด๊ฒ ํ ์ ์๊ณ , ์ธ์ ๋ฌด์์ ์ธ์ง ๋น ๋ฅด๊ฒ ํ์ ์ด ๊ฐ๋ฅํ๋ค
๊ฐ๋ฐ์๋ก ํ์ฌ๊ธ ์์ ์ ์ฝ๋๊ฐ ๋ฏธ๋์ ์ด๋ป๊ฒ ์๋ํ ์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ํ๊ฐํ์ฌ ๋ ๋์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณผ ์ ์๊ฒ ํ๋ค.
๐์๊ณ ๋ฆฌ์ฆ
์ด๋ค ๋ฌธ์ ๋ฅผ ํ๊ฑฐ๋ ๊ณ์ฐํ๊ธฐ ์ํ ์ผ๋ จ์ ์ ํํ ์ ์ฐจ
๐์ข์ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค๊ฑธ๊น์?
- ๋ชจ๋ ์ ๋ ฅ์ ๋ํ ์ฌ๋ฐ๋ฅธ ์ถ๋ ฅ์ ์์ฑ
- ์ ์ ์คํ์๊ฐ๊ณผ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ผ๋ก ํจ์จ์ ์ธ ์คํ
- ๋ค๋ฅธ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฌ์ด ์๊ณ ๋ฆฌ์ฆ
- ์ฌ์ฌ์ฉํ๊ธฐ ์ข์ ์๊ณ ๋ฆฌ์ฆ
๐์ข์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์?
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํฅ๋ฏธ๊ฐ ์๋ค
๋ฒ๋ธ, ์ ํ, ์ฝ์ ์๊ณ ๋ฆฌ์ฆ ์ ๋ค ๊ฐ์ O(n^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ๊ณผ์ ๊ณผ ํ๊ท ์ฑ๋ฅ์ผ๋ก ๋ณด๋ฉด ์ ํ ๋ค๋ฅธ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค. ์ด๋ค ๊ฒ์ ํ๋ณํ๋๋ฐ ๋จ ํ๊ฐ์ง ์์๊ฐ ์๋๋ผ ์ฌ๋ฌ๊ฐ์ง ์์๋ฅผ ๊ฐ์ง๊ณ detailํ๊ฒ ํ๋ณํด๋ด์ผ ํ๋ค๋ ์๊ฐ์ด ๋ค์ด ํฅ๋ฏธ๋ฅผ ๊ฐ๊ฒ ๋์๋ค.
- ๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์์์ ๋ถํฐ 2๊ฐ์ฉ ๋น๊ตํ์ฌ ์์ ํ ์ ๋ ฌ๋ ๋๊น์ง ๋น๊ต์ ์ค์์ ๋ฐ๋ณตํ๋ ์๊ณ ๋ฆฌ์ฆ. ํ๋ฒ์ ์ธ์ดํด๋น n-1 ๋น๊ต์ ์ฌ๋ฌ๋ฒ์ ์ค์์ด ์ผ์ด๋ ์ ์์ผ๋ฉฐ ๋ง์ง๋ง ์์น๋ฉด ๋ค์ ์์ผ๋ก ๋์๊ฐ ๋ฐ๋ณต.
- ์ ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์ ์ฒด์ ์์ดํ ์ค ๊ฐ์ฅ ์์ ์์ดํ ์ ์์น์ ํ์ฌ ์์ดํ ์ ์์น๋ฅผ ์ค์ํ๋ ์๊ณ ๋ฆฌ์ฆ. ๊ฐ์ฅ ์์ ์์ดํ ๋ถํฐ ์์์ ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํ ์ธ์ดํด๋น n-1๋ฒ ๋น๊ตํ๋ ๊ฒ์ ๋์ผํ๋ ๋จ ํ๋ฒ์ ์ค์์ด ์ผ์ด๋๋ค.
- ์ฝ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฌ๋ฆฌ ์ ์ฒด๋ฅผ ๋น๊ตํด์ ์ ๋ ฌํ๋ ๊ฒ์ด ์๋ ์ฝ์ ํ๋ ค๋ ์์ดํ ๋ง์ ๋น๊ตํ์ฌ ์ ์ ํ ์์น์ ์ ๋ ฌํ๋ ๋ฐฉ์
๐์ต์ ์ ์ํฉ์ด ๋ญ๊ฐ์? ๊ทธ๋ด๋งํ ์ผ์ด์ค๋ฅผ ์๊ฐํด๋ณธ ์ ์๋์?
๐์ต์ ์ ์ ๋๊ฐ ์ฌํ ์๊ณ ๋ฆฌ์ฆ ์ค์ ํ๊ท ์ฑ๋ฅ์ด ์ข์ ์ผ์ด์ค๋ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๋ฌด์์ ์ ํํ ๊ฒ์ธ๊ฐ
๐์ถ๊ฐ์ ์ธ ์ฌ๋ฌ ๊ธฐ๋ฒ๋ค : ํํ ๋ถ์๋ฒ, ๋ถํ ์ํ๋ถ์
- ํํ ๋ถ์๋ฒ
- ๋ถํ ์ํ๋ถ์
์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฐ์ ์ธ ์ฐ์ฐ ์งํฉ์ ๋ํด ๋น์ฉ์ด ๋์ ์ฐ์ฐ, ๊ทธ๋ฆฌ๊ณ ๋น์ฉ์ด ๋ํ ์ฐ์ฐ ๋ชจ๋๋ฅผ ํจ๊ป ๊ณ ๋ คํ๋ ๊ธฐ๋ฒ
๋ค๋ฅธ ์ข ๋ฅ์ ์ ๋ ฅ, ์ ๋ ฅ์ ๊ธธ์ด, ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๋ค๋ฅธ ์์ธ๋ค์ ์ ๋ถ ๊ณ ๋ ค
๐์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ์ฐํด ๊ฐ์ ํด๋ณธ ๊ฒฝํ์ด ์๋๋
๐์๊ฐ ๋ณต์ก๋ ๊ณ์ฐ
'Memo' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฉด์ ๋๋น] ์ค๋ฒ๋ก๋ฉ vs ์ค๋ฒ๋ผ์ด๋ฉ, RDB vs NoSql (0) | 2023.03.02 |
---|---|
๋ฉด์ ๋๋น - WS vs WAS, Stack vs Queue, Array vs Linked List (0) | 2023.02.28 |
๋ฉด์ ๋๋น - Spring Test์ฐจ์ด, ํธ๋์ญ์ , TCP vs UDP (0) | 2023.02.27 |
๋ฉด์ ๋๋น - parameter vs argument, ํ๋ก์ธ์ค vs ์ค๋ ๋ (0) | 2023.02.24 |
๋ฉด์ ๋๋น - MSA & ์ ๋ค๋ฆญ & List, Set, Map, HashMap์ ์ฐจ์ด (0) | 2023.02.23 |