๐ธ ๋ฌธ์ ์ ๊ทผ ๋ฐฉ์
โ ํ์ด ์ฑ๊ณต, ์๊ฐ ์ด๊ณผ
- participant, completion์ Queue์ ๋ฃ๋๋ค.
- completion์ ๊บผ๋ด participant์ ์์ผ๋ฉด participant์์ ์ ๊ฑฐํ๋ค.
- completion ์์๊ฐ ์์ด์ง๋๊น์ง ๋ฐ๋ณตํ๊ณ ๋จ์์๋ participant๋ฅผ ๋ฐํํ๋ค.
→ ์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ ๋ต์ ๊ตฌํ ์๋ ์์ง๋ง, ํจ์จ์ฑ ๋ฌธ์ ๊ฐ ์์๋ค.
์๊ฐ๋ณต์ก๋๊ฐ O(N^2)์ผ ๊ฒฝ์ฐ ํต๊ณผํ ์ ์๋ค.
โญ ์๊ฐ ์ด๊ณผ ํด๊ฒฐ
best_solution1, 2๋ก ํ์ด ์ ํจ์จ์ฑ ๋ฌธ์ ๋ฅผ ํต๊ณผํ ์ ์์๋ค.
best_solution1์ ๊ฒฝ์ฐ, ์ ๋ ฌ ํ ์ต๋ $10^5$๋ฒ ๋น๊ต๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ O(N)๋ง ์ํํ๋ฉด ๋๋ค.
best_solution2์ ๊ฒฝ์ฐ ํด์๋ฅผ ์ฌ์ฉํ ํ์ด๋ฐฉ์์ผ๋ก ์๊ฐ ๋จ์ถ์ ํจ๊ณผ์ ์ด์๋ค.
๐ง Sourece Code
# 2021.09.05 ์ต์ ํ์ด - hash_map ์ฌ์ฉ
from collections import defaultdict
def solution(participant, completion):
answer = ''
start = defaultdict(int)
for p in participant:
start[p] += 1
for c in completion:
start[c] -= 1
for k, v in start.items():
if v != 0:
answer = k
return answer
=========================================================================
from collections import deque
def solution(participant, completion):
'''
Notes:
- ํด๋น ํ์ด๋ deque ์ฌ์ฉ ์ ์๊ฐ์ด๊ณผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
- ์๊ฐ๋ณต์ก๋ ๊ณ์ฐ ์ O(N^2)์ผ ๊ฒฝ์ฐ ํต๊ณผ๊ฐ ์๋๋๋ก ์ค๊ณ๋์ด ์๋ ๋ฏ ํ๋ค.
1. participant, completion์ Queue์ ๋ฃ๋๋ค.
2. completion์ ๊บผ๋ด participant์ ์์ผ๋ฉด participant์์ ์ ๊ฑฐํ๋ค.
3. completion ์์๊ฐ ์์ด์ง๋๊น์ง ๋ฐ๋ณตํ๊ณ ๋จ์์๋ participant๋ฅผ ๋ฐํํ๋ค.
Args:
participant (list): ์ฐธ๊ฐ์ ๋ฆฌ์คํธ
completion (list): ์์ฃผ์ ๋ฆฌ์คํธ
Returns:
answer (str): ์์ฃผํ์ง ๋ชปํ ์ฐธ๊ฐ์ ์ด๋ฆ
'''
answer = ''
participant = deque(participant)
completion = deque(completion)
while completion:
one = completion.popleft()
if one in participant:
participant.remove(one)
answer = list(participant)
return answer[0]
def best_solution1(participant, completion):
answer = ''
participant.sort()
completion.sort()
for p, c in zip(participant, completion):
if p != c:
return p
return participant[-1]
def best_solution2(participant, completion):
answer = ''
temp = 0
dic = {}
for part in participant:
dic[hash(part)] = part
temp += int(hash(part))
for com in completion:
temp -= hash(com)
answer = dic[temp]
return answer
participant = ["leo", "kiki", "eden"]
completion = ["eden", "kiki"]
print(solution(participant, completion))
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - 12906 ์๋ก์ด ํ๋ ธ์ด ํ, 13414 ์๊ฐ์ ์ฒญ (0) | 2021.08.04 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์นด์นด์ค - ํคํจ๋๋๋ฅด๊ธฐ (0) | 2021.07.01 |
ํ๋ก๊ทธ๋๋จธ์ค ์คํํ - ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2021.06.26 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ธฐ๋ฅ ๊ฐ๋ฐ (์คํ,ํ) (0) | 2021.06.25 |
ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ฆฐํฐ(์คํ,ํ) (0) | 2021.06.24 |