์ˆœ์—ด, ์กฐํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ดํ•˜๊ธฐ
ยท
๐Ÿคฏ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
์ˆœ์—ด, ์กฐํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ถœ์ œ ๋œ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ํ•ญ์ƒ ๋งˆ์ฃผ์น˜๋ฉด ๊ตฌ๊ธ€๋ง์„ํ•œ๋‹ค.. ๋”ฐ๋ผ์„œ ์˜ค๋Š˜ ์ˆœ์—ด, ์กฐํ•ฉ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋๋‚ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์กฐํ•ฉ ์žฌ๊ท€ ๊ตฌํ˜„ ์กฐํ•ฉ์˜ ์ˆ˜๋„์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฐฐ์—ด [1, 2, 3, 4] ์—์„œ 3๊ฐœ๋ฅผ ์„ ํƒํ•˜๋Š” ์กฐํ•ฉ์„ ๊ตฌํ• ๋•Œ 1์„ ๊ณ ์ • -> ๋‚˜๋จธ์ง€ [2, 3, 4] ์ค‘์—์„œ 2๊ฐœ์”ฉ ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค. -> [1(๊ณ ์ •) + ๊ฐ๊ฐ ๋ฝ‘์€๊ฑฐ] 2๋ฅผ ๊ณ ์ • -> ๋‚˜๋จธ์ง€ [3, 4] ์ค‘์—์„œ 2๊ฐœ์”ฉ ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค. -> [2(๊ณ ์ •) + ๊ฐ๊ฐ ๋ฝ‘์€๊ฑฐ] 3์„ ๊ณ ์ • -> ๋‚˜๋จธ์ง€ [4] ์ค‘์—์„œ 2๊ฐœ์”ฉ ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค. 4๋ฅผ ๊ณ ์ • -> ๋‚˜๋จธ์ง€ [] ์—์„œ 2๊ฐœ์”ฉ ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚˜๋จธ์ง€ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ์กฐํ•ฉ์„ ๊ตฌํ•  ๋•Œ๋Š”, ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. - ๊ธฐ์ €์กฐ๊ฑด : 1๊ฐœ๋ฅผ ๋ฝ‘์„๋•Œ, ๋ชจ๋“  ๋ฐฐ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ด์ง„ํƒ์ƒ‰ ์ •๋ฆฌ
ยท
๐Ÿคฏ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
์ด์ง„ ํƒ์ƒ‰์€ ์ •๋ ฌ๋œ ๋งค์šฐ ํฐ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ตœ์ ์˜ ํ•ด๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ์— ์œ ๋ฆฌํ•˜๋‹ค. ์ด์ง„ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(logN)์˜ ๋ณต์žก๋„๋ฅผ ๋ณด์žฅํ•œ๋‹ค. ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์ด์ง„ํƒ์ƒ‰ let arr = [1, 3, 5, 7, 9, 11, 13, 15, 17]; let target = 11; function b_search_recur(arr, target, left, right) { let mid = parseInt((left + right) / 2); if (left > right) { return -1; } if (arr[mid] == target) { return mid; } else if (arr[mid] < target) { return b_search_recur(arr, target, mid + 1, right); } ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ DFS(2)
ยท
๐Ÿคฏ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
โœ๏ธ๊ตฌํ˜„ ํ•  ๊ทธ๋ž˜ํ”„ โœ๏ธ๊ทธ๋ž˜ํ”„์˜ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ์œ„ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. https://jaeyunim00.tistory.com/11 [์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ธ์ ‘ ํ–‰๋ ฌ์„ ํ†ตํ•œ ์ธ์ ‘๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„, DFS(1) โœ๏ธ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ ๊ตฌํ˜„ํ•  ๊ทธ๋ž˜ํ”„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๋ฌดํ–ฅ๊ทธ๋ž˜ํ”„ ์ด๋‹ค. โœ๏ธ์ธ์ ‘ํ–‰๋ ฌ(Adjacenty Matrix) -> ์ธ์ ‘๋ฆฌ์ŠคํŠธ(Adjacenty List) ๊ตฌํ˜„ ์œ„ ๊ทธ๋ž˜ํ”„์˜ ์ธ์ ‘ํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ฐ ์ •์ ๋ณ„๋กœ jaeyunim00.tistory.com ์ด์ œ dfs์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ†ตํ•ด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž. โœ๏ธ์ฝ”๋“œ dfsํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. void dfs(int v) { node* w; visited[v] ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ธ์ ‘ ํ–‰๋ ฌ์„ ํ†ตํ•œ ์ธ์ ‘๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„, DFS(1)
ยท
๐Ÿคฏ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
โœ๏ธ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ ๊ตฌํ˜„ํ•  ๊ทธ๋ž˜ํ”„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๋ฌดํ–ฅ๊ทธ๋ž˜ํ”„ ์ด๋‹ค. โœ๏ธ์ธ์ ‘ํ–‰๋ ฌ(Adjacenty Matrix) -> ์ธ์ ‘๋ฆฌ์ŠคํŠธ(Adjacenty List) ๊ตฌํ˜„ ์œ„ ๊ทธ๋ž˜ํ”„์˜ ์ธ์ ‘ํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ฐ ์ •์ ๋ณ„๋กœ ๊ฐ„์„ ์ด ์žˆ์œผ๋ฉด 1, ์—†์œผ๋ฉด 0 ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. #define N 9 int matrix[N][N] = { {0,1,0,0,0,0,0,0,0}, {1,0,1,1,0,0,0,0,0}, {0,1,0,1,1,0,0,0,0}, {0,1,1,0,1,1,0,0,0}, {0,0,1,1,0,0,0,0,0}, {0,0,0,1,0,0,1,1,0}, {0,0,0,0,0,1,0,1,1}, {0,0,0,0,0,1,1,0,0}, {0,0,0,0,0,0,1,0,0}, }; ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐ์ฒด ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์‚ฝ์ž… ์ •๋ ฌ ๊ตฌํ˜„ (c์–ธ์–ด)
ยท
๐Ÿคฏ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐ŸŒฟ์‚ฝ์ž…์ •๋ ฌ์ด๋ž€? ๊ธฐ๋ณธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, KEY๋ฅผ ์„ ํƒํ›„ ๋ฐฐ์—ด์˜ ๊ฐ’๋“ค๊ณผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ์‚ฝ์ž…์„ ํ• ์ง€ ์•ˆํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ตœ์ ์˜ ๊ฒฝ์šฐ -> ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ๋Š” O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ -> O(n^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ๐ŸŒฟ์ตœ์ ์˜ ๊ฒฝ์šฐ๊ฐ€ O(n)์ธ ์ด์œ  ๋‹ค๋ฅธ ๊ธฐ๋ณธ ์ •๋ ฌ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์‚ฝ์ž… ์ •๋ ฌ์€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ O(n)์„ ๊ฐ€์ง€๋Š”๋ฐ void insertion_sort(int* arr, int size) { int i, j, key; for (i = 1; i = 0 && arr[j] > key; j--) { //***์—ฌ๊ธฐ ๋ถ€๋ถ„๋•Œ๋ฌธ์— ์ตœ์ ์˜ ๊ฒฝ์šฐ O(n)์„ ๊ฐ€์ง! arr[j + 1] = ar..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฒ„๋ธ” ์ •๋ ฌ ๊ตฌํ˜„ (c์–ธ์–ด)
ยท
๐Ÿคฏ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐ŸŒฟ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ž€? ๊ธฐ๋ณธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ๊ตํ™˜ํ•œ๋‹ค. 2์ค‘ for๋ฌธ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ O(n^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ๐ŸŒฟ์ž‘๋™ ๋ฐฉ์‹ ํŽธ์˜์ƒ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…! - ์ฒซ ๋ฃจํ”„์—์„œ 1๋ฒˆ์งธ์™€ 2๋ฒˆ์งธ ๋น„๊ต ํ›„ ๊ตํ™˜ 2๋ฒˆ์งธ์™€ 3๋ฒˆ์งธ ๋น„๊ต ํ›„ ๊ตํ™˜ . . size-1๋ฒˆ์งธ์™€ size๋ฒˆ์žฌ ๋น„๊ตํ›„ ๊ตํ™˜ ์ด๋Ÿฌ๋ฉด ์ตœ๋Œ“๊ฐ’์ด ๋งจ๋’ค์— ํ•˜๋‚˜ ์˜ฎ๊ฒจ์ง€๊ฒŒ ๋œ๋‹ค. - ๋‘๋ฒˆ์งธ ๋ฃจํ”„์—์„œ 1๋ฒˆ์งธ์™€ 2๋ฒˆ์งธ ๋น„๊ต ํ›„ ๊ตํ™˜ 2๋ฒˆ์งธ์™€ 3๋ฒˆ์งธ ๋น„๊ต ํ›„ ๊ตํ™˜ . . size-2๋ฒˆ์งธ์™€ size-1๋ฒˆ์žฌ ๋น„๊ตํ›„ ๊ตํ™˜ ์—ญ์‹œ ๋งจ๋’ค - 1 ๋ฒˆ์งธ์— ์ตœ๋Œ“๊ฐ’์ด ์˜ฎ๊ฒจ์ง„๋‹ค. - ์œ„ ๊ณผ์ • ๋ฐ˜๋ณต!! โญ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์ดํ•ดํ•ด ๋ณด์ž ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ๊ฑด [i]์™€ [i+1]๋ฒˆ์งธ ๋น„๊ต์‹œ[ i+1]์˜ ๊ฐ’์ด ๋” ์ž‘์„๋•Œ ๊ตํ™˜์„ ํ•ด์ค€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค...
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์„ ํƒ ์ •๋ ฌ ๊ตฌํ˜„ (c์–ธ์–ด)
ยท
๐Ÿคฏ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐ŸŒฟ์„ ํƒ ์ •๋ ฌ์ด๋ž€? ๊ธฐ๋ณธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๊ทธ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์›๋ฆฌ๋กœ ์ž‘๋™๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 2์ค‘ for๋ฌธ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ O(n^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ๐ŸŒฟ์ž‘๋™ ๋ฐฉ์‹ ๊ฐ ๋ฃจํ”„๋งˆ๋‹ค - ์ตœ์†Ÿ๊ฐ’์„ ํƒ์ƒ‰. - ๋น„๊ตํ•˜๋Š” ๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๊ตํ™˜. ํ•˜๋‚˜์˜ ์›์†Œ๊ฐ€ ๋‚จ์„๋•Œ ๊นŒ์ง€ ์œ„์˜ ๋ฃจํ”„๋ฅผ ๋ฐ˜๋ณต โญ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์ดํ•ดํ•ด ๋ณด์ž ๐ŸŒฟ์ฝ”๋“œ #include void selection_sort(int* arr, int size) { for (int i = 0; i arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } int mai..