[c++] map๊ณผ unordered_set์ ์ฐจ์ด
๊ณต๋ถ ๊ณ๊ธฐ
์ค๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ, 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