๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/์ž๋ฃŒ๊ตฌ์กฐ ์ด๋ก 16

Queue - ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ Queue๋Š” FIFO (์„ ์ž…์„ ์ถœ)์˜ ํŠน์„ฑ์„ ๊ฐ€์ง„ ์„ ํ˜•์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ํ”„๋ฆฐํ„ฐ ์ถœ๋ ฅ ๋Œ€๊ธฐ์—ด, BFS(๋„“์ด ์šฐ์„  ํƒ์ƒ‰)๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ ๊ณต๊ฐ„์—์„œ ์ฒ˜์Œ ๋“ค์–ด๊ฐ„ ๊ฐ’์„ Front, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ค์–ด๊ฐ„ ๊ฐ’์„ Rear๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค.  โœ๏ธ Queue์˜ ์†Œ๊ฐœfront : ํ์˜ ๋งจ ์•ž ๋ถ€๋ถ„rear : ํ์˜ ๋งจ ๋’ท ๋ถ€๋ถ„enqueue() : ํ์˜ ๋งจ ๋’ค(rear) ์œ„์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์‹œ๊ฐ„๋ณต์žก๋„ : O(1)์šฉ๋Ÿ‰์ด ๊ฝ‰ ์ฐฌ ํ์— enqueue()๋ฅผ ์‹œ๋„ํ•˜๋ฉด Queue Overflow ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.dequeue() : ํ์˜ ๋งจ ์•ž(front) ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ/๋ฐ˜ํ™˜ ํ•˜๋Š” ๊ธฐ๋Šฅ์‹œ๊ฐ„๋ณต์žก๋„ : O(1)๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ํ์— dequeue()์„ ์‹œ๋„ํ•˜๋ฉด Queue Underflow ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. โœ๏ธ Que.. 2024. 6. 18.
Stack - (์„ ํ˜•)์ž๋ฃŒ๊ตฌ์กฐ stack์€ ํ›„์ž…์„ ์ถœ (LIFO)์ด๋ž€ ํŠน์„ฑ์„ ๊ฐ€์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ฃผ๋กœ ํ•จ์ˆ˜์ฝœ ์Šคํƒ, ์ˆ˜์‹ ๊ณ„์‚ฐ, ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. ์Šคํƒ์€ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ ์ƒํ™ฉ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ *๊ฒ€์ƒ‰์ด๋‚˜ ์ •๋ ฌ์€ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํฌ๊ฒŒ ์ข‹์ง€ ์•Š์•„ ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.  stack์€ push๋ฅผ ํ†ตํ•ด ์ž…๋ ฅํ•˜๊ณ  pop์„ ํ†ตํ•ด ์ถœ๋ ฅํ•œ๋‹ค. ๋˜ํ•œ ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๊ฐ’์„ bottom์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ๊ฐ’์„ top์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.  Stack์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์‚ฝ์ž…/ ์‚ญ์ œ : O(1)๊ฒ€์ƒ‰ : O(n) (๋ชจ๋“  ์š”์†Œ๋“ค์„ ํ™•์ธํ•ด์•ผํ•œ๋‹ค)์ •๋ ฌ : O(nlogn) Java ์—์„œ์˜ ์‚ฌ์šฉ๋ฒ• * JAVA์—์„œ๋Š” stack์„ import ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ java์—์„œ์˜ stack ์‚ฌ์šฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.Stack stack = n.. 2024. 6. 18.
์„ ํ˜•์ž๋ฃŒ๊ตฌ์กฐ - ๋ฐํฌ ๋ฐํฌ๋Š” ์„ ํ˜•์ž๋ฃŒ๊ตฌ์กฐ ์ค‘์—์„œ๋„ ์–‘๋ฐฉํ–ฅ์—์„œ ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. (stack + Queue)์ด๋Ÿฌํ•œ ๋ฐํฌ๋Š” ์‚ฌ์šฉ์‹œ ์ผ๋ถ€๊ธฐ๋Šฅ์„ ์ œํ•œํ•˜์—ฌ ์šฉ๋„์— ๋งž๊ฒŒ ๋ณ€ํ˜• ๊ฐ€๋Šฅํ•˜๋‹ค.  ๋˜ํ•œ ๋ฐํฌ๋Š” ์‚ฝ์ž… ์ถœ๋ ฅ๋ฐ ์‚ญ์ œ๋ฅผ ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๊ฐ๊ฐ ๋‘ ๊ฐœ์”ฉ ์žˆ๋‹ค. 1. add ์™€ remove : ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ์‹œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. (์™œ๋ƒํ•˜๋ฉด null๋“ฑ์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐœ์ƒ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)2. offer ์™€ poll : null ์ด๋‚˜ false๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.  ๋ฐํฌ์˜ ์ข…๋ฅ˜ 2๊ฐ€์ง€ 1. ์ž…๋ ฅ์ œํ•œ ๋ฐํฌ (Scroll) : ํ•œ์ชฝ์˜ ์ž…๋ ฅ์„ ์ œํ•œํ•œ ๋ฐํฌ2. ์ถœ๋ ฅ์ œํ•œ ๋ฐํฌ (Shelf) : rear ๋‚˜ front ์ชฝ ์ค‘ ํ•˜๋‚˜์˜ ์ถœ๋ ฅ์„ ์ œํ•œํ•œ ๋ฐํฌ java์—์„œ์˜ ๋ฐํฌ ์‚ฌ์šฉDeque deque = new Arra.. 2023. 8. 5.
์ž๋ฃŒ๊ตฌ์กฐ - ์šฐ์„ ์ˆœ์œ„ ํ ์šฐ์„ ์ˆœ์œ„ ํ "Priority Queue"๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์กด์žฌํ•˜๋Š” ํ์ด๋‹ค. ํ๋Š” FIFOํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋จผ์ € ๋“ค์–ด์˜จ ๊ฒƒ์„ ๋จผ์ € ๋‚ด๋ณด๋‚ด๋Š” ๊ตฌ์กฐ์ด๊ณ  ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ด๋Ÿฌํ•œ ํ์˜ ํŠน์„ฑ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„์— ๋Œ€ํ•ด ๋จผ์ € ๋‚ด๋ณด๋‚ด๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Java์—์„œ๋„ ์ด๋Ÿฌํ•œ Queue๋‚˜ Priority Queue๋ฅผ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์•„๋ž˜์˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์˜ˆ์‹œ๋ฅผ ๋ณด๊ฒ ์ง€๋งŒ, ๊ฐ„๋‹จํ•˜๊ฒŒ add๋ฅผ ํ†ตํ•ด ์ž…๋ ฅ๋ฐ›๊ณ  peek๋ฅผ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ œ์ผ ๋†’์€ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ  remove๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ๊ณผ ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ์œ„ํ•ด์„œ "๋ฐฑ์ค€ 1655๋ฒˆ ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”" ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฌธ์ œ๋ฅผ ํ‘ผ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ž…๋ ฅ๊ฐ’์ด ์ฃผ์–ด์งˆ๋•Œ๋งˆ๋‹ค์˜ ๊ฐ€.. 2023. 5. 22.