ํ”„๋กœ๊ทธ๋ž˜๋ฐ 17

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ - ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• Euclidean Algorithm

์ผ๋ฐ˜์ ์œผ๋กœ A์™€ B์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ A์™€ B๋ฅผ 2๋ถ€ํ„ฐ A์™€ B์ค‘ ๋” ์ž‘์€ ์ˆ˜ ๊นŒ์ง€ ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์ˆ˜๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ค ๋น„ํšจ์œจ์ ์ด๋ฉฐ, ๋ชจ๋“  ์ˆ˜๋กœ ๋‚˜๋ˆ ์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด ๋œ๋‹ค. ์ด๋•Œ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• (Euclidean Algorithm) : ๋‘ ์ •์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(Greatest Common Divisor)๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ A > B ์ผ ๋•Œ1. A % B = C2. B % C = D3. ์œ„ ๊ณผ์ •์„ ๊ณ„์† ๋ฐ˜๋ณต4. X % Y = 0, Y๊ฐ€ A์™€ B์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•ด ๋ณด์ž ๋‘ ์ •์ˆ˜ A, B๋ฅผ ์ง์‚ฌ๊ฐํ˜•์˜ ๋‘ ๋ณ€์˜ ๊ธธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ง์‚ฌ๊ฐํ˜•์„ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์™„์ „ํžˆ ์ฑ„์šฐ๋ ค๊ณ  ํ•  ๋•Œ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐ€์žฅ ๊ธด ๋ณ€์˜ ๊ธธ..

[์ž๋ฃŒ๊ตฌ์กฐ] ์›ํ˜• ํ Circular Queue

0. ์›ํ˜• ํ Circular Queue ๋ž€? ์›ํ˜• ํ๋ž€ ์„ ํ˜• ํ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ => ์„ ํ˜• ํ๋ž€? ๋ฐ์ดํ„ฐ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์ˆœ์„œ๋Š” ์„ ์ž…์„ ์ถœ (FIFO : Fisrt In First Out) ์ธํ (enqueue) : ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ž‘์—… ๋””ํ (dequeue) : ํ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—… ํ”„๋ŸฐํŠธ (front) : ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ชฝ ๋ฆฌ์–ด (rear) : ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ชฝ ๋ชจ๋‘ ์„ ํ˜• ํ๋ž‘ ๊ฐ™์ง€๋งŒ, ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฑฐ๋‚˜ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์•ž์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ์ง€ ์•Š์•„๋„ ๋˜๋„๋ก ๋ง ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ ๋ง ๋ฒ„ํผ(ring buffer) : ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๊ณผ ๋์ด ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ๋ณด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ. ์‹ค์ œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€๋Š” ์•Š์Œ 1. ์›ํ˜• ํ ๊ตฌํ˜„ int[] cque : ์›ํ˜• ํ ๋ณธ์ฒด์šฉ ๋ฐฐ์—ด int max : ์›ํ˜• ํ ์šฉ๋Ÿ‰. ์›..

[์ž๋ฃŒ๊ตฌ์กฐ] ํ Queue / ์„ ํ˜• ํ Linear Queue

0. ํ Queue ๋ž€? ํ๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ( ํ Queue == ์„ ํ˜• ํ Linear Queue ) ๋ฐ์ดํ„ฐ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์ˆœ์„œ๋Š” ์„ ์ž…์„ ์ถœ (FIFO : Fisrt In First Out) ex ) ์€ํ–‰ ์ฐฝ๊ตฌ์—์„œ ์ฐจ๋ก€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€๊ธฐ์—ด, ๋งˆํŠธ์—์„œ ๊ณ„์‚ฐ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€๊ธฐ์—ด ๋“ฑ ์ธํ (enqueue) : ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ž‘์—… ๋””ํ (dequeue) : ํ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—… ํ”„๋ŸฐํŠธ (front) : ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ชฝ ๋ฆฌ์–ด (rear) : ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ชฝ 1. ํ ๊ตฌํ˜„ int[] que : ํ ๋ณธ์ฒด์šฉ ๋ฐฐ์—ด int max : ํ ์šฉ๋Ÿ‰. ํ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ ์ˆ˜ int front : ํ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ€์žฅ ์ฒ˜์Œ ์œ„์น˜. ๋‹ค์Œ dequeue()๋ฅผ ์‹คํ–‰..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ด์ง„ ํƒ์ƒ‰ Binary Search

์ด์ง„ ํƒ์ƒ‰(Binary Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์š”์†Œ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ(sort)๋œ ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ํ‚ค ๊ฐ’์„ ๊ฐ–๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€ ํƒ์ƒ‰. ์„ ํ˜• ํƒ์ƒ‰๋ณด๋‹ค ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ ๊ฐ€๋Šฅ ๊ฐ’ 53์„ ํƒ์ƒ‰ 1. ๋ฐฐ์—ด์˜ ์ค‘์•™ Binary[5] ์™€ ๋น„๊ต, 53 > Binary[5] => Binary[5] ์ด์ „ ๋ฐฐ์—ด ํƒ์ƒ‰ ๋Œ€์ƒ์—์„œ ์ œ์™ธ 2. Binary[6] ~ Binary[10]์˜ ์ค‘์•™ Binary[8] ๊ณผ ๋น„๊ต, 53 Binary[8] ์ดํ›„ ๋ฐฐ์—ด ํƒ์ƒ‰ ๋Œ€์ƒ์—์„œ ์ œ์™ธ 3. Binary[6] ~ Binary[7]์˜ ์ค‘์•™ Binary[6] ๊ณผ ๋น„๊ต, 53 == Binary[6] => ํƒ์ƒ‰ ์„ฑ๊ณต ๋งจ ์•ž์˜ ์ธ๋ฑ์Šค๋ฅผ pl, ๋งจ ๋์˜ ์ธ๋ฑ์Šค๋ฅผ pr, ์ค‘์•™ ์ธ๋ฑ์Šค๋ฅผ pc๋ผ๊ณ  ํ•  ๋•Œ ..

[์ž๋ฃŒ๊ตฌ์กฐ] ์Šคํƒ Stack

0. ์Šคํƒ Stack ์ด๋ž€ ? ์Šคํƒ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์ˆœ์„œ๋Š” ํ›„์ž…์„ ์ถœ (LIFO : Last In First Out) ex ) ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹คํ–‰ํ•  ๋•Œ ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์—์„œ ์Šคํƒ ์‚ฌ์šฉ ํ‘ธ์‹œ (push) : ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ž‘์—… ํŒ (pop) : ์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—… ๊ผญ๋Œ€๊ธฐ (top) : ํ‘ธ์‹œ์™€ ํŒ์„ ํ•˜๋Š” ์œ„์น˜ ๋ฐ”๋‹ฅ (bottom) : ์Šคํƒ์˜ ๊ฐ€์žฅ ์•„๋žซ๋ถ€๋ถ„ 1. ์Šคํƒ ๊ตฌํ˜„ int[] stk : ์Šคํƒ ๋ณธ์ฒด์šฉ ๋ฐฐ์—ด. index 0์ธ ์š”์†Œ๊ฐ€ ์Šคํƒ์˜ bottom int max : ์Šคํƒ ์šฉ๋Ÿ‰. ์Šคํƒ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ ์ˆ˜ int ptr : ์Šคํƒ ํฌ์ธํ„ฐ. ๋‹ค์Œ push()๋ฅผ ์‹คํ–‰ํ•  ์œ„์น˜. ํ˜„์žฌ ์Šคํƒ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์„ ํ˜• ํƒ์ƒ‰ Linear Search

์„ ํ˜• ํƒ์ƒ‰(Linear Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜ or ์ˆœ์ฐจ ํƒ์ƒ‰(Sequential Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์š”์†Œ๊ฐ€ ์ง์„  ๋ชจ์–‘์œผ๋กœ ๋Š˜์–ด์ง„ ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ํ‚ค ๊ฐ’์„ ๊ฐ–๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€ ๋งจ ์•ž๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰ ์œ„ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด ๊ฐ’ 5๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด Linear[2] ์—์„œ ํƒ์ƒ‰์— ์„ฑ๊ณตํ•˜์ง€๋งŒ ๊ฐ’ 3์„ ํƒ์ƒ‰ํ•˜๋ฉด Linear์— ๊ฐ’ 3์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์— ์‹คํŒจํ•œ๋‹ค. ์œ„ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ๋ฐฐ์—ด ํƒ์ƒ‰์˜ ์ข…๋ฃŒ ์กฐ๊ฑด์ด ๋‹ค์Œ 2๊ฐœ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ฑด 1 : ํƒ์ƒ‰ํ•  ๊ฐ’๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ (ํƒ์ƒ‰ ์„ฑ๊ณต) ์กฐ๊ฑด 2 : ํƒ์ƒ‰ํ•  ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฐฐ์—ด์˜ ๋์„ ์ง€๋‚˜๊ฐ„ ๊ฒฝ์šฐ (ํƒ์ƒ‰ ์‹คํŒจ) ๋ฐฐ์—ด์˜ ์š”์†Œ ์ˆ˜๊ฐ€ n๊ฐœ ์ผ ๋•Œ ์กฐ๊ฑด 1,2๋ฅผ ํŒ๋‹จํ•˜๋Š” ํšŸ์ˆ˜๋Š” ํ‰๊ท  n/2ํšŒ ์ด๋‹ค. => O(n) ๋ฉ”์„œ๋“œ seqSea..

[์ž๋ฃŒ๊ตฌ์กฐ] ๋ฐฐ์—ด Array

0. ๋ฐฐ์—ด Array ๋ž€ ? ๋ฐฐ์—ด์€ ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋ชจ์ธ ๊ฒƒ. 1. ๋ฐฐ์—ด ์„ ์–ธ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋ฉด ๋ฐฐ์—ด ๋ณธ์ฒด์™€ ํ•จ๊ผ ๋ฐฐ์—ด์˜ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” length๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋ฐฐ์—ด a์˜ ๊ฐ ์š”์†Œ์˜ ์ž๋ฃŒํ˜•์€ int์ด๊ณ  ๋ฐฐ์—ด a์˜ ์ž๋ฃŒํ˜•์€ int[5] ์ด๋‹ค. int[] a; // ์ž๋ฃŒํ˜•์ด int์ธ ๋ฐฐ์—ด a ์„ ์–ธ : ํ˜•์‹A // => intํ˜• ๋ฐฐ์—ด์ž„์„ ๋ช…ํ™•ํžˆ ์•Œ๋ ค์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋งŽ์ด ์‚ฌ์šฉ๋จ int a[]; // ์ž๋ฃŒํ˜•์ด int์ธ ๋ฐฐ์—ด a ์„ ์–ธ : ํ˜•์‹B a = new int[5] // a๋Š” ๊ธธ์ด๊ฐ€ 5์ธ ๋ฐฐ์—ด์„ ์ฐธ์กฐ int[] a = new int[5]; // ์„ ์–ธ๊ณผ ์ฐธ์กฐ๋ฅผ ํ•œ๋ฒˆ์— int[] a = {1, 2, 3, 4, 5} // ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”, ์ˆœ์„œ๋Œ€๋กœ ๋Œ€์ž…๋จ int[] a..