ํด์ ํ ์ด๋ธ
Key & Values
- ํด์ ํ ์ด๋ธ์ value์ key๋ฅผ ๊ฐ์ง
- ๋์ ๋๋ฆฌ์ ๋ค๋ฅธ ์ ์ key๊ฐ ๊ณ์ฐ๋ ์ซ์ ์ํ์ค ํน์ char
- ๋ฐฐ์ด์ ์ฌ์ฉํด์ ์ฐ์์ ์ด์ง ์์ buckets๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ตฌ์กฐ์ ์ ์ฅ
- ๊ฐ ๊ฐ์ ์์น๋ ํด์ ํจ์์ ์ํด ๊ณ์ฐ
ํด์ ์ถฉ๋(collisions)
๋ค๋ฅธ ๊ฐ์ input ํ์ง๋ง ๊ฐ์ hash๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ(๋ค๋ฅธ ๊ฐ์ด๋ผ๋ ๊ฐ์ ํด์๋ฅผ ๊ฐ์ง ์ ์์ง๋ง ๊ฐ์ ํด์ ๊ฐ์ด๋ผ ํด์ ๊ฐ์ ์ธ์คํด์ค๋ ์๋ -> ๋จ๋ฐฉํฅ)
ํด์์ ์ฅ์
์ค๋ณต์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋์ง ์๋ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ ๊ตฌ์กฐ์์ ์ฌ์ฉํ ์ ์๋ค.
ํนํ ๊ทธ ํฌ๊ธฐ๊ฐ ์ด๋ป๋ ๊ฐ์ ๊ฐ์ ์ฐพ๋ ์๊ฐ ๋ณต์ก๋๊ฐ O(1)์ด๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐ๊ฐ ํฐ ๋ฐ์ดํฐ์์ ๊ฐ์ ํจ๊ณผ์ ์ผ๋ก ์ฐพ์ ์ ์๋ค.
๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ด์
๋์ ๋๋ฆฌ๋ ํค์ ๊ฐ์ด ๋ค์ด ์๋ ๊ฒฝ์ฐ ๊ฐ์ ๋ฐํํ์ง๋ง get()์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ key์ ๊ฐ์ด ์์ ๋ false๋ฅผ ๋ฐํํจ.
์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์ ๋ ฌํ์ง ์๊ณ ์ํ๋ ๊ฐ์ ์ฐพ์๋ด๊ธฐ ์ํด ์ฌ์ฉํจ
๊ทธ๋ฌ๋ ์ค๋ณต๋ ์ด๋ฆ์ ๊ฐ์ง๋ ์ฌ๋์ด ์์ด ๋ฆฌ์คํธ ์์ฒด๋ฅผ ๋น๊ตํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์๋ค.
์๋กญ๊ฒ ์๊ฒ ๋ ๊ฒ
import collections
collections.Counter(์ดํฐ๋ ์ดํฐํ ๊ฐ์ฒด) -> ์๋ก ์ฐ์ฐ ๊ฐ๋ฅ
hash() -> ํด์ ๊ฐ ๋ฐํ
์ ์ถ์ฉ ์ฝ๋
def solution(participant, completion):
a = dict()
for i in completion :
if a.get(i):
a[i] += 1
else:
a[i] = 1
for i in participant :
if not a.get(i) :
return i
else:
a[i] -= 1
if a.get(i) < 0:
return i
์ถ๊ฐ : Swift
ํด์ฌ ์ฌ์ฉํ์ง ์๊ณ ์ ๋ ฌ๋ก ๊ฐ๋จํ๊ฒ ํ ๊ฒฝ์ฐ ๋น๊ต ํด์ฃผ์ด๋ ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ค๋ณต๋๋ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ฅผ ๋ณต์กํ๊ฒ ๊ตฌํ์ง ์์๋ ๋๋ค.
๋ค๋ง sort ๋๋ฌธ์ ์ ๋ ฅ ๊ฐ์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ ์ ์๋ค.
class Solution {
func programmersProblem(_ participant: [String], _ completion: [String] -> String) {
var par = participant
var com = completion
par.sort()
com.sort()
for i in 0..<com.count {
if par[i] != com[i] {
return par[i]
}
}
return par[par.count-1]
}
}
๋๊ธ