๐ Coding Test/Programmers
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level2 (๋ฒ ์คํธ์จ๋ฒ)
ใ
ใ
ใ
ใ
2023. 1. 12. 05:13
728x90
1. ๋ฌธ์ ์ค๋ช
์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋ ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋ ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
2. ์ ํ์ฌํญ
- genres[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋์ ์ฅ๋ฅด์ ๋๋ค.
- plays[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋๊ฐ ์ฌ์๋ ํ์์ ๋๋ค.
- genres์ plays์ ๊ธธ์ด๋ ๊ฐ์ผ๋ฉฐ, ์ด๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- ์ฅ๋ฅด ์ข ๋ฅ๋ 100๊ฐ ๋ฏธ๋ง์ ๋๋ค.
- ์ฅ๋ฅด์ ์ํ ๊ณก์ด ํ๋๋ผ๋ฉด, ํ๋์ ๊ณก๋ง ์ ํํฉ๋๋ค.
- ๋ชจ๋ ์ฅ๋ฅด๋ ์ฌ์๋ ํ์๊ฐ ๋ค๋ฆ ๋๋ค.
![](https://blog.kakaocdn.net/dn/cF2LSN/btrVZeCPR0n/EXa6X73KnoBIOI2Ohp0Sn1/img.png)
3. ๋ด ํ์ด
from collections import defaultdict
def solution(genres, plays):
dictionary = defaultdict(int)
music = [[idx,x,y] for (idx,x),y in zip(enumerate(genres), plays)]
for x,y in zip(genres, plays):
dictionary[x] += y
music.sort(key=lambda x: (dictionary[x[1]],x[2]),reverse=True)
cnt = 0
answer = [music[0][0]]
for idx,x in enumerate(music[1:]):
cnt += 1
if music[idx-1][1] != x[1]:
cnt = 1
if cnt < 2:
answer.append(x[0])
return answer
4. ๋ค๋ฅธ ์ฌ๋ ํ์ด
def solution(genres, plays):
answer = []
d = {e:[] for e in set(genres)}
for e in zip(genres, plays, range(len(plays))):
d[e[0]].append([e[1] , e[2]])
genreSort =sorted(list(d.keys()), key= lambda x: sum( map(lambda y: y[0],d[x])), reverse = True)
for g in genreSort:
temp = [e[1] for e in sorted(d[g],key= lambda x: (x[0], -x[1]), reverse = True)]
answer += temp[:min(len(temp),2)]
return answer
728x90