๋ฐฑ์ค€

[c++] map๊ณผ unordered_set์˜ ์ฐจ์ด

Jaeguk 2024. 5. 15. 14:40

๊ณต๋ถ€ ๊ณ„๊ธฐ


์˜ค๋Š˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€, map์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ unordered_set์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ํ†ต๊ณผํ–ˆ๋‹ค

  • ์ž…๋ ฅ๋œ ๊ฐ’์ค‘์— ํŠน์ • ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ O(1) ๋งŒ์— ํƒ์ƒ‰ํ•˜๊ณ ์ž ํ–ˆ๋‹ค
  • ๊ทธ๋ž˜์„œ ๋‚˜๋Š” map์ด key, value๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๋– ์˜ฌ๋ ค ๋‹น์—ฐํžˆ ํ•ด์‹œ์ผ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๊ณ  ์‚ฌ์šฉํ–ˆ๋‹ค
  • ๊ทธ๋Ÿฐ๋ฐ, map์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  ํ•ด์‹œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค

 

ํ’€์—ˆ๋˜ ๋ฌธ์ œ

https://www.acmicpc.net/problem/19585

 

map


STL์—์„œ ์ œ๊ณตํ•˜๋Š” key, value ์ž๋ฃŒ๊ตฌ์กฐ

  • map์€ key, value๊ฐ€ pair ํ˜•ํƒœ๋กœ ์ €์žฅ์ด ๋˜๋ฉฐ, ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST) ๊ธฐ๋ฐ˜์œผ๋กœ ํƒ์ƒ‰ ์„ ํ•œ๋‹ค
    • ๋”ฐ๋ผ์„œ ํƒ์ƒ‰ ์‹œ๊ฐ„์€ O(logN)
  • ์ •ํ™•ํžˆ๋Š” "๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ(RBT)"๋ฅผ ์‚ฌ์šฉ ํ•˜๋ฉฐ, ๊ฐ’์„ ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ณ  ๊ท ํ˜•์„ ์œ ์ง€ ํ•œ๋‹ค
  • ์‚ฝ์ž…์‹œ์— ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์›€์ง์ž„์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— unordered_map์— ๋น„ํ•ด ๋А๋ฆฌ๋‹ค

 

unordered_map


STL์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ key, value ์ž๋ฃŒ๊ตฌ์กฐ

  • unordered_map์€ map๊ณผ ๋‹ฌ๋ฆฌ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ํƒ์ƒ‰ ํ•œ๋‹ค
    • ๋”ฐ๋ผ์„œ ํ•ด์‹œ ์ถฉ๋Œ์ด ์—†๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ํƒ์ƒ‰ ์‹œ๊ฐ„์€ O(1)

 

map๊ณผ unordered_map์˜ ์ฐจ์ด


๊ทธ๋Ÿผ ๋‘˜์€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๊ณ  ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์ง€?

  • map์˜ ๊ฒฝ์šฐ์—๋Š” ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ์ •๋ ฌ์„ ํ•ด์„œ ์ €์žฅ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•œ๋‹ค
  • ์ผ๋ฐ˜์ ์œผ๋กœ unordered_map์ด map๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๊ณ  ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด map์ด ๋” ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค
  • ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์ด๋ก ์ƒ ๊ท ํ˜•์„ ๊ณ„์† ๋งž์ถ”๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ ์ปดํŒฉํŠธํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ , ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ๋Š” ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์€ ๊ฒฝ์šฐ์—๋Š” unordered_map, ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” map์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

 

map๊ณผ unordered_map์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„


๊ฐ๊ฐ์— ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์•Œ์•„๋ณด์ž
์—ฐ์‚ฐ map unordered_map
ํƒ์ƒ‰ O(logN) O(1)
์‚ฝ์ž… O(logN) O(1)
์‚ญ์ œ O(logN) O(1)

 

unordered_set


๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ํ’€์ด์— ์‚ฌ์šฉํ–ˆ๋˜ unordered_set์€ ๋ญ์ง€?

  • unordered_set์€ set์€ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋Š” set ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค
  • set๊ณผ map์˜ ์ฐจ์ด๋Š” set์˜ ๊ฒฝ์šฐ๋Š” ๋‹จ์ง€ ๊ฐ’์„ ์ €์žฅํ•˜์ง€๋งŒ, map์€ key, value ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ธ ๊ฒƒ์ด ์ฐจ์ด๋‹ค

 

์ง€๊ธˆ๊นŒ์ง€ map์ด ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์ธ์ค„ ์•Œ์•˜๋Š”๋ฐ, BST ๊ธฐ๋ฐ˜์ธ ๊ฒƒ์„ ์ฒ˜์Œ ์•Œ์•˜๋‹ค
์•ž์œผ๋กœ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜๋ ค๋ฉด unordered_map์ด๋‚˜ unordered_set์„ ์‚ฌ์šฉํ•˜์ž

 

 

Reference


 

STL map / unordered_map ๊ณผ map์ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

map ์€ ๋ฌด์—‡์ธ๊ฐ€? map STL์— ์†ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ค‘ ํ•˜๋‚˜๋กœ key์™€ value๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ์ด๋Š” pair ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ๋‹ค. unordered_map์€ ๋ฌด์—‡์ธ๊ฐ€? unordered_map์€ hash_table ๊ธฐ๋ฐ˜์˜ hash container ์ด๋‹ค. ๊ธฐ์กด์˜ map

gyong0.tistory.com

 

[STL ์ปจํ…Œ์ด๋„ˆ] map & unordered_map & multimap

๐Ÿ”” map ์ปจํ…Œ์ด๋„ˆ

ansohxxn.github.io

 

[C++] set๊ณผ unorderd_set

set๊ณผ unorderd_set์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

velog.io

 

728x90