์ ์ฒด ๊ธ(45)
-
[์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ 4. ๋ณํฉ ์ ๋ ฌ (๋ค๋ฅธ ์ ๋ ฌ๋ณด๋ค ์๋์ ์ผ๋ก ํจ์จ์ )
๐ ๋ถํ ์ ๋ณต(Divide and Conquer)๋ถํ (divide): ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ (์ฌ์ด ๋ฌธ์ )๋ก ๋ถํ ์ ๋ณต(conquer): ์์ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ๊ฐ๊ฐ ํด๊ฒฐ์กฐํฉ(combine): ํด๊ฒฐํ ๋ถ๋ถ ๋ฌธ์ ์ ๋ต์ ์ด์ฉํ์ฌ ๋ค์ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ์ด์ ? ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก "๋ถํ ํ๋ ๋ฐฉ์์ด ๋์ผํ" ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ํฌ๊ธฐ๊ฐ ๋ ๋๊น์ง ๊ณ์ํ์ฌ ๋ถํ ๋ถํ ์ ๋ณต์ ๋จ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์์ ํจ์ ํธ์ถ ํ์๊ฐ ๋ง์ด ๋ฐ์์ด๋ ์ค๋ฒํค๋(overhead)๋ก ์ด์ด์ง๋ค. ๐ ๋ณํฉ ์ ๋ ฌ(Merge Sort)๋ณํฉ ์ ๋ ฌ์ ์ ํ์ ์ธ ๋ถํ ์ ๋ณต(divide and conquer) ์๊ณ ๋ฆฌ์ฆ์ด๋ค.์๊ฐ ๋ณต์ก๋ O(NlogN)์ ๋ณด์ฅํ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ ์ค ..
2024.10.28 -
[์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ 3. ์ฝ์ ์ ๋ ฌ
๐ ์ฝ์ ์ ๋ ฌ(Insertion Sort)์ฝ์ ์ ๋ ฌ์ด๋ ๊ฐ ์ซ์๋ฅผ ์ ์ ํ ์์น์ ์ฝ์ ํ๋ ์ ๋ ฌ ๊ธฐ๋ฒ๊ฐ ๋จ๊ณ์์ ํ์ฌ ์์๊ฐ ์ฝ์ ๋ ์์น๋ฅผ ์ฐพ๋๋ค.์ ์ ํ ์์น์ ๋๋ฌํ ๋๊น์ง ๋ฐ๋ณต์ ์ผ๋ก ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ค.๋งค ๋จ๊ณ์์ ํ์ฌ ์ฒ๋ฆฌ ์ค์ธ ์์๊ฐ ์ฝ์ ๋ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฝ N๋ฒ์ ์ฐ์ฐ์ด ํ์๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ N๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค๋ ์ ์์ ์ต์ ์ ๊ฒฝ์ฐ O(N²)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. ์ถ์ฒ: https://fastcampus.co.kr/dev_online_upjscodingtest JavaScript ์ฝ๋ฉํ ์คํธ 131๊ฐ ์์ & CS์ง์์ผ๋ก ๋๋ด๊ธฐ | ํจ์คํธ์บ ํผ์ค25์๊ฐ ๋๋น ๊ณผ์ / '์ฝํ ๋ ์ ๋' ์ ํ๋ฒ ๊ฐ์ฌ๋๊ป ํต์ฌ๋ง ๋ฐฐ์ฐ๊ณ ๋น ๋ฅด๊ฒ ํฉ๊ฒฉํ์ธ์.fastcampus.co.kr
2024.10.28 -
[์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ 2. ๋ฒ๋ธ ์ ๋ ฌ
๐ ๋ฒ๋ธ ์ ๋ ฌ์ ํ์ ๋ ฌ๋ณด๋ค ๋นํจ์จ์ฑ์ด ๋์๋จ์ํ ์ธ์ ํ ๋ ์์๋ฅผ ํ์ธํ์ฌ, ์ ๋ ฌ์ด ์ ๋์ด ์๋ค๋ฉด ์์น๋ฅผ ์๋ก ๋ณ๊ฒฝํ๋ค์๋ก ์ธ์ ํ ๋ ์์๋ฅผ ๋น๊ตํ๋ ํํ๊ฐ ๊ฑฐํ๊ณผ ๊ฐ๋ค๊ณ ํ์ฌ ๋ถ์ฌ์ง ์ด๋ฆ์๊ฐ ๋ณต์ก๋ O(N²)๋ก ๋นํจ์จ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ฒซ์งธ์ ๋์งธ๋ฅผ ๋น๊ต, ๋์งธ์ ์ ์งธ๋ฅผ ๋น๊ต, ์ ์งธ์ ๋ท์งธ๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์~5๋จ๊ณ๊น์ง ๊ณ์ ๋ฐ๋ณตํ๋ค.์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ํด์ ๋ชจ๋ ๋น๊ต๊ฐ ํ์ํ๋ฏ๋ก, ๊ต์ฅํ ๋นํจ์จ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋ ์ถ์ฒ: https://fastcampus.co.kr/dev_online_upjscodingtest JavaScript ์ฝ๋ฉํ ์คํธ 131๊ฐ ์์ & CS์ง์์ผ๋ก ๋๋ด๊ธฐ | ํจ์คํธ์บ ํผ์ค25์๊ฐ ๋๋น ๊ณผ์ / '์ฝํ ๋ ์ ๋' ์ ํ๋ฒ ๊ฐ์ฌ๋๊ป ํต์ฌ๋ง ๋ฐฐ์ฐ๊ณ ๋น ๋ฅด๊ฒ ํฉ๊ฒฉํ์ธ์.fas..
2024.10.28 -
[์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ 1. ์ ํ์ ๋ ฌ
๐ ์ ํ ์ ๋ ฌ(Selection Sort)์ ํ ์ ๋ ฌ์ ๋งค ๋จ๊ณ์์ ๊ฐ์ฅ ์์ ์์๋ฅผ ์ ํํด์ ์์ผ๋ก ๋ณด๋ด๋ ์ ๋ ฌ ๋ฐฉ๋ฒ์์ผ๋ก ๋ณด๋ด์ง ์์๋ ๋ ์ด์ ์์น๊ฐ ๋ณ๊ฒฝ๋์ง ์์์๊ฐ ๋ณต์ก๋ O(N²)๋ก ๋นํจ์จ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋ ์ถ์ฒ: https://fastcampus.co.kr/dev_online_upjscodingtest https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC ์ ํ ์ ๋ ฌ - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ . ์ ํ ์ ๋ ฌ(้ธๆๆดๅ, selection sort)์ ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก, ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง๋ค. ์ฃผ์ด์ง ๋ฆฌ์คํธ ์ค์ ์ต์๊ฐ์ ์ฐพ๋๋ค. ๊ทธ ๊ฐ์ ๋งจ ์์ ์ko.w..
2024.10.28 -
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ(Graph)์ ํํ
๐ ๊ทธ๋ํ๊ทธ๋ํ๋ ์ฌ๋ฌผ์ ์ ์ (vertex)๊ณผ ๊ฐ์ (edge)์ผ๋ก ๋ํ๋ด๊ธฐ ์ํ ๋๊ตฌ๊ทธ๋ํ๋ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌํ ๊ฐ๋ฅ์ธ์ ํ๋ ฌ(adjacency matrix): 2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ธ์ ๋ฆฌ์คํธ(adjacency list): ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์๐ ์ธ์ ํ๋ ฌ(Adjacency Matrix)์ธ์ ํ๋ ฌ์์๋ ๊ทธ๋ํ๋ฅผ 2์ฐจ์ ๋ฐฐ์ด๋ก ํํ๋ฌด๋ฐฉํฅ ๋ฌด๊ฐ์ค์น ๊ทธ๋ํ (์๊ธฐ์์ ๊ณผ ๊ฐ์ ์ด ์ฐ๊ฒฐ๋์ด์์ง ์์ ๋ 0์ผ๋ก ํ๊ธฐ)๋ชจ๋ ๊ฐ์ ์ด ๋ฐฉํฅ์ฑ์ ๊ฐ์ง์ง ์๋ ๊ทธ๋ํ๋ฅผ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ๋ผ๊ณ ํ๋ค. ๋ฌด๋ฐฉํฅ ๋น๊ฐ์ค์น ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋ ์ฐ๊ฒฐ๋์ด ์๋ ์ํฉ์ ์ธ์ ํ๋ ฌ๋ก ์ถ๋ ฅํ ์ ์๋ค.๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์ ํ์์ง ์์๋ฐฉํฅ ๊ฐ์ค์น ๊ทธ๋ํ๋ชจ๋ ๊ฐ์ ์ด ๋ฐฉํฅ์ ๊ฐ์ง๋ ๊ทธ๋ํ๋ฅผ ๋ฐฉํฅ ๊ทธ๋ํ๋ผ๊ณ ํ๋ค.๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์..
2024.10.27 -
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree)์ ์ฐ์ ์์ ํ(Priority Queue)
๐ ํธ๋ฆฌ(Tree)ํธ๋ฆฌ๋ ๊ฐ๊ณ๋์ ๊ฐ์ด ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํํํ ๋ ์ฌ์ฉํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋๋ฌด(tree)์ ํํ๋ฅผ ๋ค์ง์ ๊ฒ๊ณผ ๊ฐ์ด ์๊น๋ฃจํธ ๋ ธ๋ (root node) : ๋ถ๋ชจ๊ฐ ์๋ ์ต์์ ๋ ธ๋๋จ๋ง ๋ ธ๋ (leaf node): ์์์ด ์๋ ๋ ธ๋ํธ๋ฆฌ์์๋ ๋ถ๋ชจ์ ์์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ๋ค.ํ์ ๊ด๊ณ: 5 ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋์ 23 ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋์ฌ์ด์ ๊ด๊ณ๊น์ด(depth): ๋ฃจํธ ๋ ธ๋์์์ ๊ธธ์ด(length)์ด๋ ๊ธธ์ด๋ ์ถ๋ฐ ๋ ธ๋์์ ๋ชฉ์ ์ง ๋ ธ๋๊น์ง ๊ฑฐ์ณ์ผ ํ๋ ๊ฐ์ ์ ์๋ฅผ ์๋ฏธํธ๋ฆฌ์ ๋์ด(height)๋ ๋ฃจํธ ๋ ธ๋์์ ๊ฐ์ฅ ๊น์ ๋ ธ๋๊น์ง์ ๊ธธ์ด๋ฅผ ์๋ฏธ ๐ ์ด์ง ํธ๋ฆฌ(Binary Tree)์ด์ง ํธ๋ฆฌ๋ ์ต๋ 2๊ฐ์ ์์์ ๊ฐ์ง ์ ์๋ ํธ๋ฆฌ๋ฅผ ๋งํจ๐ ์ฐ์ ์์ ํ(Priority Queue)์ฐ์ ์์์ ๋ฐ๋ผ์..
2024.10.27 -
[์๋ฃ๊ตฌ์กฐ] ํ(Queue)
๐ ํ(Queue)๋จผ์ ์ฝ์ ๋ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ถ์ถ๋๋ ์๋ฃ๊ตฌ์กฐ ex) ์ํ์ฐฝ๊ตฌ, ์ค ์๋ ๊ฒ๊ณตํํ ์๋ฃ๊ตฌ์กฐ๐ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ํ ๊ตฌํ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํํ ๋๋ ๋จธ๋ฆฌ(head)์ ๊ผฌ๋ฆฌ(tail)๋ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๋ค. ์ถ์ฒ: https://fastcampus.co.kr/dev_online_upjscodingtest JavaScript ์ฝ๋ฉํ ์คํธ 131๊ฐ ์์ & CS์ง์์ผ๋ก ๋๋ด๊ธฐ | ํจ์คํธ์บ ํผ์ค25์๊ฐ ๋๋น ๊ณผ์ / '์ฝํ ๋ ์ ๋' ์ ํ๋ฒ ๊ฐ์ฌ๋๊ป ํต์ฌ๋ง ๋ฐฐ์ฐ๊ณ ๋น ๋ฅด๊ฒ ํฉ๊ฒฉํ์ธ์.fastcampus.co.kr
2024.10.27 -
[์๋ฃ๊ตฌ์กฐ] ์คํ(Stack)
๐ ์คํ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋์ค์ ๋๊ฐ๋ ์๋ฃ๊ตฌ์กฐ๋ฐ์ค๊ฐ ์์ธ ํํ๋ฅผ ์คํ(Stack)์ด๋ผ๊ณ ํ๋ค.์๋ก์ด ์์๋ฅผ ์ฝ์ ํ ๋๋ ๋ง์ง๋ง ์์น์ ์ฝ์ -> ์๋ก์ด ์์๋ฅผ ์ญ์ ํ ๋ ๋ง์ง๋ง ์์๊ฐ ์ญ์ ๐ ์คํ ์ฐ์ฐ ์ข ๋ฅPush, Pop, Top(๋ง์ง๋ง์ ๋ค์ด์จ ์์), Empty(์คํ์ด ๋น์์๋์ง ํ์ธ) - ์๊ฐ๋ณต์ก๋ O(1)๐ JS์์ ์คํ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ - ๋ฐฐ์ด ์๋ฃํjs์ ๊ธฐ๋ณธ์ ์ธ ๋ฐฐ์ด ์๋ฃํ ๋ ๊ฐ์ง ๋ฉ์๋ ์ ๊ณต -> push()๋ฉ์๋, pop()๋ฉ์๋ ์ถ์ฒ: https://fastcampus.co.kr/dev_online_upjscodingtest JavaScript ์ฝ๋ฉํ ์คํธ 131๊ฐ ์์ & CS์ง์์ผ๋ก ๋๋ด๊ธฐ | ํจ์คํธ์บ ํผ์ค25์๊ฐ ๋๋น ๊ณผ์ / '์ฝํ ๋ ์ ๋' ์ ํ๋ฒ ๊ฐ์ฌ๋๊ป ํต์ฌ๋ง ..
2024.10.27