Algorithm/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 6๊ฑด

์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋Š” ์™„์ „์ด์ง„ํŠธ๋ฆฌ์ธ ํž™(Heap)์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue) ํ(Queue)๋Š” FIFO(First in - First out)๊ตฌ์กฐ๋กœ ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋Š” ๋“ค์–ด์˜จ ์ˆœ์„œ์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ๋•Œ๋ฌธ์— ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š”๋ฐ ํšจ์œจ์ ์ธ ํž™(Heap)์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. - ํž™์ด ์•„๋‹Œ ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ n๊ฐœ ์ผ ๋•Œ O(n)์ด ๋œ๋‹ค. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€..

HashSet Set์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ง€์›ํ•˜๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค 1. ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. 2. ์ž…๋ ฅํ•œ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. 3. null์„ ํ—ˆ์šฉํ•œ๋‹ค. ์ค‘๋ณต์„ ๊ฑธ๋Ÿฌ๋‚ด๋Š” ๊ณผ์ • HashSet์€ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์ „์— 1. ๋จผ์ € ๊ฐ์ฒด์˜ hashCode() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ์–ป์–ด๋‚ธ๋‹ค. 2. ๊ฐ™์€ ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด equals() ๋ฉ”์†Œ๋“œ๋กœ ๋น„๊ตํ•ด์„œ true๊ฐ€ ๋‚˜์˜ค๋ฉด ๋™์ผํ•œ ๊ฐ์ฒด๋กœ ํŒ๋‹จํ•˜์—ฌ ์ค‘๋ณต ์ €์žฅ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฌธ์ž์—ด์„ HashSet์— ์ €์žฅํ•  ๊ฒฝ์šฐ ๋ฌธ์ž์—ด์ด ๊ฐ™์€ ๋‘ String ๊ฐ์ฒด๋Š” ์„œ๋กœ ๊ฐ™์€ ๊ฐ์ฒด๋กœ ๊ฐ„์ฃผ๋˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” String ํด๋ž˜์Šค๋Š” hashCode()์™€ equals() ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด๋ฉด true๋ฅผ, ๋‹ค๋ฅด๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•˜๊ฒŒ๋” ํ–ˆ๋‹ค. ํŠน์ดํ•œ๊ฒŒ HashS..