ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Data Structure 4

[์ž๋ฃŒ๊ตฌ์กฐ] ์›ํ˜• ํ 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()๋ฅผ ์‹คํ–‰..

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

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

[์ž๋ฃŒ๊ตฌ์กฐ] ๋ฐฐ์—ด 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..