์์ฃผํ์ง ๋ชปํ ์ ์
๋ฌธ์ ํ๋ฌ๊ฐ๊ธฐ
๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด participant์ ์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด completion์ด ์ฃผ์ด์ง ๋, ์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ง๋ผํค ๊ฒฝ๊ธฐ์ ์ฐธ์ฌํ ์ ์์ ์๋ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
- completion์ ๊ธธ์ด๋ participant์ ๊ธธ์ด๋ณด๋ค 1 ์์ต๋๋ค.
- ์ฐธ๊ฐ์์ ์ด๋ฆ์ 1๊ฐ ์ด์ 20๊ฐ ์ดํ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ฐธ๊ฐ์ ์ค์๋ ๋๋ช ์ด์ธ์ด ์์ ์ ์์ต๋๋ค.
def solution(participant, completion):
answer = ''
comp = completion
for part in participant:
if part not in comp:
answer+= part
else:
comp.remove(part)
return answer
์ด๋ผ๊ณ ์์ฑํ ์ฝ๋๋ ํจ์จ์ฑ ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค.
list ์์ดํ ์ ์ฐพ์ ์ญ์ ํ๋ remove ํจ์๊ฐ O(n)์๊ฐ์ด ๊ฑธ๋ ค์ ์ด ์๊ฐ๋ณต์ก๋๊ฐ O(n^2)๋๋ ๋ฏ ํ๋ค.
def solution(participant, completion):
p = sorted(participant)
c = sorted(completion)
# print(len(p), len(c))
for i in range(len(p)-1):
if p[i] != c[i]:
return p[i]
return p[-1]
ํ์ด์ฌ์ ํจ์๋ณ ์๊ฐ๋ณต์ก๋ ๋ํ๋ฉํ ์ด์ ์ ๋ฐ๋ฅด๋ฉด ์ ๋ ฌํจ์๋ O(nlogn)์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
๋งค iteration๋ง๋ค ์ญ์ ์ฐ์ฐ์ ํด ์ด ์๊ฐ๋ณต์ก๋ O(n^2)์ด ๋์ค๋๋, ์ด ์๊ฐ๋ณต์ก๋ O(nlogn)+O(nlogn)์ด ๋ฌ๊ฒ ๋ค์ถ์ด์, ๋ ๋ฐฐ์ด์ sorted ํจ์๋ก ์ ๋ ฌ ํ ๋ค O(n)์๊ฐ ๋งํผ ๋จ์ ๋น๊ต์ฐ์ฐ์ ์ํํ๋ค.
ํ ์คํธ 1 ใ | ํต๊ณผ (0.05ms, 12.2MB) |
ํ ์คํธ 2 ใ | ํต๊ณผ (0.05ms, 12.1MB) |
ํ ์คํธ 3 ใ | ํต๊ณผ (0.33ms, 12.2MB) |
ํ ์คํธ 4 ใ | ํต๊ณผ (0.70ms, 12.2MB) |
ํ ์คํธ 5 ใ | ํต๊ณผ (0.69ms, 12.3MB) |
ํ ์คํธ 1 ใ | ํต๊ณผ (53.58ms, 89.2MB) |
ํ ์คํธ 2 ใ | ํต๊ณผ (87.81ms, 127MB) |
ํ ์คํธ 3 ใ | ํต๊ณผ (124.47ms, 155MB) |
ํ ์คํธ 4 ใ | ํต๊ณผ (119.66ms, 170MB) |
ํ ์คํธ 5 ใ | ํต๊ณผ (134.45ms, 170MB) |
๋ก ํจ์จ์ฑ ํ ์คํธ๋ ํต๊ณผํ์ง๋ง, collections.Counter ํจ์๋ฅผ ์ฌ์ฉํ ์ชฝ์ด ๋ ๊ฐ๊ฒฐํด๋ณด์ด๊ณ , ํจ์จ์ฑ๋ ์กฐ๊ธ ๋ ์ข๋ค.
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
ํ ์คํธ 1 ใ | ํต๊ณผ (0.15ms, 12MB) |
ํ ์คํธ 2 ใ | ํต๊ณผ (0.13ms, 12.1MB) |
ํ ์คํธ 3 ใ | ํต๊ณผ (0.36ms, 12.2MB) |
ํ ์คํธ 4 ใ | ํต๊ณผ (0.60ms, 12.3MB) |
ํ ์คํธ 5 ใ | ํต๊ณผ (0.60ms, 12.4MB) |
ํ ์คํธ 1 ใ | ํต๊ณผ (34.02ms, 89.2MB) |
ํ ์คํธ 2 ใ | ํต๊ณผ (43.79ms, 129MB) |
ํ ์คํธ 3 ใ | ํต๊ณผ (78.56ms, 154MB) |
ํ ์คํธ 4 ใ | ํต๊ณผ (68.90ms, 170MB) |
ํ ์คํธ 5 ใ | ํต๊ณผ (86.31ms, 169MB) |