(2021.08.03)
๐ ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42576
๋ฌธ์ ์ค๋ช
์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์์ต๋๋ค. ๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด participant์ ์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด completion์ด ์ฃผ์ด์ง ๋, ์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ง๋ผํค ๊ฒฝ๊ธฐ์ ์ฐธ์ฌํ ์ ์์ ์๋ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
- completion์ ๊ธธ์ด๋ participant์ ๊ธธ์ด๋ณด๋ค 1 ์์ต๋๋ค.
- ์ฐธ๊ฐ์์ ์ด๋ฆ์ 1๊ฐ ์ด์ 20๊ฐ ์ดํ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ฐธ๊ฐ์ ์ค์๋ ๋๋ช ์ด์ธ์ด ์์ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
participant completion return
["leo", "kiki", "eden"] | ["eden", "kiki"] | "leo" |
["marina", "josipa", "nikola", "vinko", "filipa"] | ["josipa", "filipa", "marina", "nikola"] | "vinko" |
["mislav", "stanko", "mislav", "ana"] | ["stanko", "ana", "mislav"] | "mislav" |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
"leo"๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
์์ #2
"vinko"๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
์์ #3
"mislav"๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ๋ ๋ช
์ด ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ํ ๋ช
๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ช
์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
โ๏ธ ํ์ด
์ฒ์ ํ์ด๋ ์ ๋ง ๋ณ๋ก์๋ค.
'์....๊ทธ๋ฅ completion ๋ฐฐ์ด์ ์๋ ๊ฐ์ฒด๋ค์ participant ๋ฐฐ์ด์์ ์ง์ฐ๊ณ ๋จ์ ํ๋๋ฅผ ์ฃผ๋ฉด ๋๋ ๊ฒ ์๋๊ฐ?'
๋ง๋ค. ํ์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ต์ ๋์ค์ง๋ง ํจ์จ์ฑ์์ ๋ค ํ๋ฝํ๋ ์ฐธ์ฌ๊ฐ ์ผ์ด๋๊ณ ๋ง๋ค.
def solution(participant, completion):
answer = ''
for i in range(len(completion)):
if participant.count(completion[i]) >0:
participant.remove(completion[i])
return participant[0]
ํ ๋ง๋๋ก ์ ์ฝ๋๋ ํจ์จ์ด ๋นต์ ์ธ ์ฝ๋์ธ ๊ฒ์ด๋ค!
๊ทธ๋ ๋ค๋ฉด ์ด๋กํ๋๋. ๋๋ ๋์ ๋๋ฆฌ๋ ๋ฏธ์ํ๊ณ ...๋ค๋ฅธ ๋ฉ์๋๋ค๋ ์ ๋ชจ๋ฅธ๋ค.
๋ฐฉ๋ฒ์ ๊ตฌ๊ธ๋ง ๋ฟ!ใ .ใ
์ธ์์ ์ฒ์ฌ๋ค์ด ๋ง๋ค. ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ์์์ ธ ๋์๋ค.
๊ทธ ์ค ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ์ ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ก
Counter
collections๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์กด์ฌํ๋ ํจ์์ด๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋์ ๋๋ฆฌ๋ก ๋ฆฌํดํด์ค๋ค.
๋ง์ , ๋บ์ ์ฐ์ฐ๋ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ๋ฌด์ฒ์ด๋ ์ค์ํ๋ค.
๋บ์ ์ ๊ฒฝ์ฐ -1์ด๋ ๊ทธ ์ดํ์ ์ซ์๊ฐ ๋์๋ 0์ผ๋ก ๋ฆฌํดํด์ฃผ๋ฉฐ, 0์ด ๋์ค๋ฉด ์ฌ๋ผ์ง๋ ๊ฒ ๊ฐ๋ค.
<์ ๋ต ์ฝ๋>
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
์ ์ฝ๋๋ฅผ ๋ณด๊ณ ๊ถ๊ธํด์ ๋ช ๊ฐ ์ฐ์ด๋ณธ ์ฝ๋๊ฐ ์๋ค.."andrew"๋ฅผ participant์ ์ถ๊ฐํ๋ค.
participant = ["mislav", "stanko", "mislav", "ana", "andrew"]
completion = ["stanko", "ana", "mislav"]
def solution(participant, completion):
tmp = Counter(participant)-Counter(completion)
print(tmp)
#1 ๊ฒฐ๊ณผ: Counter({'mislav':1, 'andrew':1})
print(tmp['mislav'])
#2 ๊ฒฐ๊ณผ: 1
print(tmp.keys())
#3 ๊ฒฐ๊ณผ: dict_keys(['mislav', 'andrew'])
print(list(tmp))
#4 ๊ฒฐ๊ณผ: ['mislav', 'andrew']
print(list(tmp).sort())
#5 ๊ฒฐ๊ณผ: None
print(sorted(list(tmp)))
#6 ๊ฒฐ๊ณผ: ['andrew', 'mislav']
Counter๋ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฆฌํด๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฌ๊ธฐ์ ๋์ ๋๋ฆฌ์ keys() ํน์ values() ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋์ ๋๋ฆฌ๋ ์์์๋ ์ธ๋ฑ์ค ์ ๊ทผ์ด ์๋๊ธฐ ๋๋ฌธ์, list๋ก ๋ณํํด์ฃผ์ด์ผ ๊ฐ์ ์ ๊ทผํ ์ ์๋ค.
์ด๋ ์ด์ ๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ 5๋ฒ์ ๊ฒฐ๊ณผ๊ฐ ์๋์ค๊ณ 6๋ฒ์ ์ ๋๋ก ๋์จ๋ค. ํ ...
์ํ๋ฒณ ์์๋ก ๋ณด๊ณ ์ถ๋ค๋ฉด Counter๋ก ๋์ ๋๋ฆฌ ํํ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ๋ฐฐ์ด์ sort()ํ๊ฑฐ๋, ์๋๋ฉด ๋ฆฌ์คํธ๋ก ๋ณํ ํ์ sorted(list())๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ์ทจํ ์ ์๊ฒ ๋ค.
Hash
def solution(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
hash()ํจ์๋ ๋ค์ด์จ ๊ฐ์ ๋ํ ๊ณ ์ ๊ฐ์ ๋ฆฌํดํด์ค๋ค๊ณ ํ๋ค.
์ฆ ๋ค์ด์จ ๊ฐ(value)์ ๋ํ ๊ณ ์ ๊ฐ(key) ์์ด ์ง์ด์ง๋, ์ผ์ข ์ ๋์ ๋๋ฆฌ ํํ๊ฐ ๋ง๋ค์ด์ง ์ ์๋ ๊ฒ์ด๋ค.
๋์ ๋๋ฆฌ์ ์ฐธ์ฌ์๋ค์ ํด์ ๊ฐ(๊ณ ์ ๊ฐ: Key)์ ์ด๋ฆ ๊ฐ(Value)์ ๋ชจ๋ ๋ฃ์ผ๋ฉฐ, ํด์๊ฐ์ ํฉ์ ๊ตฌํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฃผ์๋ค์ ํด์๊ฐ์ ์ฐธ์ฌ์๋ค์ ํด์๊ฐ ํฉ์์ ๋บ๋ค.
๋จ ํ ๋ช ๋ง์ด ์์ฃผํ์ง ๋ชปํ๋ค๊ณ ํ์ผ๋ฏ๋ก, ์์ฃผ์๋ค์ ๋ชจ๋ ๋นผ๊ณ ๋๋ฉด temp์๋ ์์ฃผํ์ง ๋ชปํ ๋จ ํ ๋ช ์ ํด์๊ฐ๋ง์ด ๋จ๊ฒ ๋๋ค.
๊ทธ ํด์๊ฐ์ ํตํด ๋ง๋ค์ด๋์๋ ๋์ ๋๋ฆฌ์์ Value ๊ฐ(์ด๋ฆ)์ ์ ๊ทผํ๋ค.
๐ ๐ ๐
๏ผฐ๏ฝ๏ฝ๏ฝ๏ฝ ๏ฝ ๏ผข๏ฝ ๏ผณ๏ผก๏ผน
๐๐ฉ๐ข๐ฏ๐ฌ๐ด ๐ง๐ฐ๐ณ ๐ณ๐ฆ๐ข๐ฅ๐ช๐ฏ๐จ