Chapter9. ํด์
[๋ฌธ์ 37] ๋ฒ ์คํธ ์จ๋ฒ - Level3
์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋
ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋
ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋
ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ํ ๋
ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋ก
2. ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋
ธ๋๋ฅผ ๋จผ์ ์๋ก
3. ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋
ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋
ธ๋๋ฅผ ๋จผ์ ์๋ก
๋
ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋
ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋
ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
[์ ํ์ฌํญ]
- genres{i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋
ธ๋์ ์ฅ๋ฅด
- plays{i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋
ธ๋๊ฐ ์ฌ์๋ ํ์
- genres์ plays์ ๊ธธ์ด๋ ๊ฐ์ผ๋ฉฐ, ์ด๋ 1 ์ด์ 10,000์ดํ
- ์ฅ๋ฅด ์ข
๋ฅ๋ 100๊ฐ ๋ฏธ๋ง
- ์ฅ๋ฅด์ ์ํ ๊ณก์ด ํ๋๋ผ๋ฉด, ํ๋์ ๊ณก๋ง ์ ํ
- ๋ชจ๋ ์ฅ๋ฅด๋ ์ฌ์๋ ํ์๊ฐ ๋ค๋ฆ.
[์ฝ๋์์ฑ]
- ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ์ฌ ์กฐ๊ฑด์ ๋ง๊ฒ ์ ๋ฆฌ
//enumerate()ํจ์๋ ์ธ๋ฑ์ค์ ์์๋ก ์ด๋ฃจ์ด์ง ํํ(tuple)์ ๋ง๋ค์ด์ค๋ค.
def solution(genres, plays):
answer = []
info = {}
gens = {}
for idx, (gen, play) in enumerate(zip(genres, plays)):
if gen not in info:
info[gen] = [(idx, play)]
else:
info[gen].append((idx, play))
gens[gen] = gens.get(gen, 0) + play
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ์ฌ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง๊ฒ ํ์
answer = []
for(gen, _) in sorted(gens.items(), key=lambda X:x[1], reverse=True):
for(idx,_) in sorted(info[gen], key=lambda x:x[1], reverse=True)[:2]:
answer.append(idx)
[์ ์ฒด์ฝ๋]
def solution(genres, plays):
answer = []
info = {}
gens = {}
for idx, (gen, play) in enumerate(zip(genres, plays)):
if gen not in info:
info[gen] = [(idx, play)]
else:
info[gen].append((idx, play))
gens[gen] = gens.get(gen, 0) + play
for(gen, _) in sorted(gens.items(), key=lambda X:x[1], reverse=True):
for(idx,_) in sorted(info[gen], key=lambda x:x[1], reverse=True)[:2]:
answer.append(idx)
return answer