Skip to content

Latest commit

ย 

History

History

P7662

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 

[baekjoon-7662] ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ

image

์‹œ๊ฐ„์ดˆ๊ณผ ์ด์Šˆ

์ฒ˜์Œ์—๋Š” Programmers ์ด์ค‘์šฐ์„ ์ˆœ์œ„ํ ๋ฌธ์ œ ํ’€์ด ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜๊ฒŒ Priority Queue๋ฅผ ๋‘ ๊ฐœ ์„ ์–ธํ•ด์„œ ํ’€์—ˆ๋‹ค. ๊ทธ๋žฌ๋”๋‹ˆ ์‹œ๊ฐ„์ดˆ๊ณผ ์ด์Šˆ๊ฐ€ ๋‚ฌ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ ๋‘˜ ๋ชจ๋‘์— ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž๋ฐ” API์˜ ๋ช‡๋ช‡ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ฐพ์•„๋ณด์•˜๋‹ค.

  • Priority Queue : Heap์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์ด ๋น„๊ต์  ๋น ๋ฅด์ง€๋งŒ, ํ•œ ์ชฝ์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์–ด ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ ๋ชจ๋‘์— ์ ‘๊ทผํ•˜๋ ค๋ฉด minHeap๊ณผ maxHeap ๋‘ ๊ฐœ๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ’€์–ด์•ผ ํ•˜๊ณ , ํ•œ ์ชฝ์—์„œ ์‚ญ์ œ ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ชฝ์—๋„ ์‚ญ์ œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • Deque : ๋ฑ์ฒ˜๋Ÿผ ์–‘ ์˜†์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ, ์•ž๋’ค๋กœ ์ •๋ ฌ์ด ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งค๋ฒˆ ์ •๋ ฌ์„ ํ•˜๊ธฐ์—” O(N)์œผ๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํฌ๋‹ค.
  • TreeMap : ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ key-value ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. TreeMap์€ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ๋•Œ key๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ TreeMap ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์˜€๋‹ค.

TreeMap

์ฐธ๊ณ  : [Java] ์ž๋ฐ” TreeMap ์‚ฌ์šฉ๋ฒ• & ์˜ˆ์ œ ์ด์ •๋ฆฌ

TreeMap์€ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•œ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ(Red-Black Tree) ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ํŠธ๋ฆฌ ๋†’์ด๋งŒํผ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ๊ฐ’์ด ์ „์ฒด ํŠธ๋ฆฌ์— ์ž˜ ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋‹ค๋ฉด ๊ดœ์ฐฎ์œผ๋‚˜ ํŠธ๋ฆฌ๊ฐ€ ํ•œ ์ชฝ์œผ๋กœ ์ ๋ฆด ๊ฒฝ์šฐ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์ด๋ฉฐ, ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋Š” ์™ผ์ชฝ ์ž์‹์œผ๋กœ, ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋Š” ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ๋ฐฐ์น˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€๋‚˜ ์‚ญ์ œ ์‹œ ํŠธ๋ฆฌ๊ฐ€ ํ•œ ์ชฝ์œผ๋กœ ์ ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ Map์„ ์œ ์ง€ํ•  ๋•Œ ํšจ์œจ์ ์ด๋ฉฐ, ์ •๋ ฌ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€/์‚ญ์ œ ์—ฐ์‚ฐ ์„ฑ๋Šฅ์€ HashMap๋ณด๋‹ค ๋–จ์–ด์ง„๋‹ค.

TreeMap์„ ์ด์šฉํ•œ ๋ฌธ์ œ ํ’€์ด

  • key๋กœ ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๋ฅผ, value๋กœ ๊ทธ ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋„ฃ์–ด ๊ด€๋ฆฌํ•˜์˜€๋‹ค.
  • ์ตœ์†Ÿ๊ฐ’ ์‚ญ์ œ ์—ฐ์‚ฐ์€ map.firstKey()๋กœ, ์ตœ๋Œ“๊ฐ’ ์‚ญ์ œ ์—ฐ์‚ฐ์€ map.lastKey()๋กœ ์ˆ˜ํ–‰ํ•˜์˜€๋‹ค.

image