Hash
KEY : VALUE
๐ ํด์์ ํต์ฌ ๊ฐ๋
ํด์ ํจ์ : ์์์ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ก ๋งคํ
ํด์ ํจ์์ ์ํด ์ป์ด์ง๋ ๊ฐ : ํด์ ๊ฐ, ํด์ ์ฝ๋, ํด์ ์ฒดํฌ์ฌ, ํด์
๐์ถฉ๋(Collision)
์๋ก ๋ค๋ฅธ ํค๊ฐ ๋์ผํ ํด์ ๊ฐ์ ๊ฐ์ง ๋ ๋ฐ์ํจ
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ธฐ๋ฒ(์: ์ฒด์ด๋, ๊ฐ๋ฐฉ ์ฃผ์๋ฒ ๋ฑ)์ด ์ฌ์ฉ
๐HashMap ์๊ฐ ๋ณต์ก๋ ์ ๋ฆฌ
get, put, search : ํ๊ท ์ ์ผ๋ก๋ O(1)
get, put, search : ์ต์
์ ๊ฒฝ์ฐ์๋ O(N) (JDK 7 ์ดํ) ์ฐ๊ฒฐ๋ฆฌ์คํธ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์
get, put, search : ์ต์
์ ๊ฒฝ์ฐ์๋ O(logN) (JDK 8 ์ด์) Balanced Tree ์ฌ์ฉ
๐Java์์ HashMap ์์ ํ์ฉ๋ ๋์ ํจ์ ์ ๋ฆฌ
containsKey(Object key)
Returns true if this map contains a mapping for the specified key.
get(Object key) : Returns the value to which the specified key is mapped
getOrDefault(Object key, V defaultValue) : Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key.
put(K key, V value) : Associates the specified value with the specified key in this map.
๐ 31 ์์๋ฅผ ๊ณฑํ๋ฉด ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋ ๊น?
ํด์ ํจ์์์ ์์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ํด์ ๊ฐ์ ๊ท ๋ฑ ๋ถํฌ๋ฅผ ์ด์งํจ
์ฌ๊ธฐ์ ์์๋ฅผ ๊ณฑํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ํ์ ํน์ฑ๊ณผ ์ด์ ์ด ์์
์์์ ๊ท ๋ฑ ๋ถํฌ ํน์ฑ
์์๋ ๊ทธ ์์ฒด๋ก ๋ค๋ฅธ ์์ ์ํด ๋๋์ด์ง์ง ์๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์์
์ด๋ ์์๊ฐ ๊ณฑํด์ง ๊ฒฐ๊ณผ๊ฐ ๊ธฐ์กด์ ํจํด์ด๋ ์ฃผ๊ธฐ์ฑ์ ๊นจ๋จ๋ฆฌ๋๋ฐ ๋์์ ์ค
๋ฐ๋ผ์ ํด์ ๊ฐ์ ๊ท ๋ฑ ๋ถํฌ๋ฅผ ์ด์งํ์ฌ ํด์ ์ถฉ๋์ ์ค์ผ ์ ์์
๋ฌธ์ ๋งํฌ : https://leetcode.com/problems/ransom-note/description/
*** ๋ฌธ์ ํ์ด ***
1) magazine์ ๋ฌธ์์ ๋น๋์ ์ ์ฅ
2) ransomNote์ ๋ฌธ์๋ฅผ ํ๋์ฉ ๊บผ๋ด์ map์์ ๋ฌธ์๋ก ๊ฒ์ํ๊ณ ์นด์ดํธ๋ฅผ ๊ฐ์
2-1) ์ค๊ฐ ๊ณผ์ ์ ๋ฌธ์๋ก ๊ฒ์์ ํ์ ๋ 0์ด๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ๋ค๋ฉด false
3) ๋ฐ๋ณต๋ฌธ์ ๋ง์ณค๋ค๋ ์๋ฏธ๋ magazine์ ๊ฐ์ง๊ณ ransomNote๋ฅผ ๋ง๋ค์ ์๋ค๋ ์๋ฏธ์ true
M : magazine์ ๋ฌธ์์ด ๊ธธ์ด
N : ransomNote์ ๋ฌธ์์ด ๊ธธ์ด
์๊ฐ ๋ณต์ก๋ : O(M + N)
๊ณต๊ฐ ๋ณต์ก๋ : O(1)
#leetcode #problemsolving #ํด์ธ์ทจ์
#๋น
ํ
ํฌ #์ฝํ
#์ฝ๋ฉํ
์คํธ
#array #hash #์ฑ๋ฅ#java #python #cplusplus #javascript
#์ฝ๋ฉ #๊ฐ๋ฐ์ #coding #developer #algorithm #datastructures
#๊ฐ๋ฐ์์ทจ์
#์ฝ๋ฉ๊ณต๋ถ #๊ฐ๋ฐ์๋ฉด์ #๊ฐ๋ฐ์ํฌํธํด๋ฆฌ์ค #๊ฐ๋ฐ์๊ณต๋ถ
#chatgpt #claude
chatgpt๋ก ์๋ฐ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด#python #cplusplus #javascript ์์