1. ๋ฌธ์ ์์ฝ
์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์๋ค. ๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์๋ค.
์ฐธ๊ฐ์ ๋ช
๋จ(participant)๊ณผ ์์ฃผ์ ๋ช
๋จ(completion)์ด ์ฃผ์ด์ง ๋, ์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค.
2. ์ ๊ทผ ๋ฐฉ์ ๋ฐ ํฌ์ธํธ
์ฐธ๊ฐ์ ์ค ๋๋ช ์ด์ธ์ด ์์ ์ ์๋ค๋ ์ ์ด ํต์ฌ์ด๋ค. ๋จ์ํ ์กด์ฌ ์ฌ๋ถ๋ง ์ฒดํฌํด์๋ ์ ๋๋ฉฐ, ๊ฐ ์ด๋ฆ๋ณ ์ธ์์๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ค.
- โ
์๋ฃ๊ตฌ์กฐ: Python์
dict(Hash Table)๋ฅผ ํ์ฉํ์ฌ ์ด๋ฆ๋ณ ์ธ์์๋ฅผ ์ ์ฅํ๋ค. - โ
์๊ฐ ๋ณต์ก๋: O(n) ์ด๋ด์ ํด๊ฒฐํด์ผ ํ๋ค.
participant์completion์ ๊ฐ๊ฐ ํ ๋ฒ์ฉ ์ํํ๋ฏ๋ก O(n)์ ํด๋นํ๋ค.
3. ๊ตฌํ ์ฝ๋ (Python)
def solution(participant, completion):
d = {}
for people in participant:
d[people] = d.get(people, 0) + 1
for complete in completion:
if complete in d:
d[complete] += -1
for key, value in d.items():
if value != 0:
return key
๐ ๋์
๋๋ฆฌ ์กฐํ ๋ฐฉ๋ฒ: d.get(์์, 0)์ ์์๊ฐ ์์ผ๋ฉด 0์ ๋ฐํํ๋ ์ ์ฉํ ๋ฉ์๋์ด๋ค.
๐ ๋์
๋๋ฆฌ ์ํ: d.items()๋ฅผ ์ฌ์ฉํ์ฌ for๋ฌธ์์ key์ value๋ฅผ ๋์์ ๊บผ๋ด์ด ์ฒ๋ฆฌํ๋ค.
4. ๋ฆฌํฉํ ๋ง - Counter ์ฌ์ฉ
Python์ collections.Counter๋ฅผ ํ์ฉํ๋ฉด ๊ฐ๋
์ฑ์ ํจ์ฌ ๋์ผ ์ ์๋ค.
from collections import Counter
def solution(participant, completion):
return list((Counter(participant) - Counter(completion)).keys())[0]
Counter ๊ฐ์ฒด ๊ฐ์ ๋บ์
์ฐ์ฐ ๊ฒฐ๊ณผ, ๊ฐ์ด 0 ์ดํ์ธ ํค๋ ์๋์ผ๋ก ์ ์ธ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋จ์ ํค ๋ฆฌ์คํธ์์ ์ฒซ ๋ฒ์งธ ์์([0])๋ฅผ ๋ฐํํ๋ฉด ์์ฃผํ์ง ๋ชปํ ์ ์๋ฅผ ์ฐพ์ ์ ์๋ค.
[์์] Counter ๊ฒฐ๊ณผ๊ฐ
Counter({'leo': 1, 'kiki': 1, 'eden': 1})
'๐งฉ Algorithm > [Programmers] ์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2026.03.19 |
|---|---|
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ํฌ์ผ๋ชฌ (0) | 2026.03.18 |