๋ฌธ์ ์ค๋ช
์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋ ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋ ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์ฌํญ
- genres[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋์ ์ฅ๋ฅด์ ๋๋ค.
- plays[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋๊ฐ ์ฌ์๋ ํ์์ ๋๋ค.
- genres์ plays์ ๊ธธ์ด๋ ๊ฐ์ผ๋ฉฐ, ์ด๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- ์ฅ๋ฅด ์ข ๋ฅ๋ 100๊ฐ ๋ฏธ๋ง์ ๋๋ค.
- ์ฅ๋ฅด์ ์ํ ๊ณก์ด ํ๋๋ผ๋ฉด, ํ๋์ ๊ณก๋ง ์ ํํฉ๋๋ค.
- ๋ชจ๋ ์ฅ๋ฅด๋ ์ฌ์๋ ํ์๊ฐ ๋ค๋ฆ ๋๋ค.
์
์ถ๋ ฅ ์
genres | plays | return |
["classic", "pop", "classic", "classic", "pop"] | [500, 600, 150, 800, 2500] | [4, 1, 3, 0] |
์
์ถ๋ ฅ ์ ์ค๋ช
classic ์ฅ๋ฅด๋ 1,450ํ ์ฌ์๋์์ผ๋ฉฐ, classic ๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ณ ์ ๋ฒํธ 3: 800ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 0: 500ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 2: 150ํ ์ฌ์
pop ์ฅ๋ฅด๋ 3,100ํ ์ฌ์๋์์ผ๋ฉฐ, pop ๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ณ ์ ๋ฒํธ 4: 2,500ํ ์ฌ์
- ๊ณ ์ ๋ฒํธ 1: 600ํ ์ฌ์
๋ฐ๋ผ์ pop ์ฅ๋ฅด์ [4, 1]๋ฒ ๋ ธ๋๋ฅผ ๋จผ์ , classic ์ฅ๋ฅด์ [3, 0]๋ฒ ๋ ธ๋๋ฅผ ๊ทธ๋ค์์ ์๋กํฉ๋๋ค.
๋์ ์๋ฃจ์
def solution(genres, plays):
genres_dict = {}
for genre in list(set(genres)):
genres_dict[genre] = {}
genres_dict[genre]["songs"] = []
genres_dict[genre]["total_plays"] = 0
for i in range(len(genres)):
genres_dict[genres[i]]["songs"].append([plays[i], i])
genres_dict[genres[i]]["total_plays"] += plays[i]
plays_count = []
for genre in genres_dict.keys():
plays_count.append([genres_dict[genre]["total_plays"], genre])
genres_dict[genre]["songs"].sort(reverse=True)
plays_count.sort(reverse=True)
answer = []
for num in plays_count:
max = genres_dict[num[1]]["songs"]
try:
if max[0][0] != max[1][0]:
answer.extend((max[0][1], max[1][1]))
elif max[0][0] == max[1][0]:
answer.extend((max[1][1], max[0][1]))
except:
answer.append(max[0][1])
return answer
๋ฐฐ์ด ์
์ค๋ ์ ์ ํ์๋ ๋ฌธ์ ๋ผ zip ๋ counter ๋ฑ์ ๋ฉ์๋๋ฅผ ํ์ฉํ์ง ์์ ์ฝ๋์ด๋ค. ๊ทธ๋ฌ๋ ์์์ ์ธ ์ฝ๋๊ฐ ์คํ๋ ค ์ง๊ด์ ์ด๊ณ , ํด์์ ๋์์ด ๋ ์ผ์ด์ค์๋ค. ๋ค์ ์ฝ์ด๋ณด๋ ์ฝ๋์ ๊ฐ ์ค์ด ์ ํํ ์ด๋ค ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ ์ด ๋๋ฉฐ, ๋จ๊ณ๋ณ๋ก ์ด๋ป๊ฒ ๋ฌธ์ ์ ์ ๊ทผํด ๋๊ฐ๋์ง ์ ์ ์๋ ๊ฒฝ์ฐ์ด๋ค. (๋ฐ๋๋ก ์ฌ๋ฌ ํด๋์ค๋ ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ์ง ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ ๊ฐ๋ ์ฑ์ด ์กฐ๊ธ ๋จ์ด์ ธ ๋ณด์ด๋ ๊ฒฝํฅ์ด ์์๋ค.) ๋๋ก๋ ์กฐ๊ธ ๊ธธ์ด๋ ๋จ์ํ ์ฝ๋๋ฅผ ์ง๋๊ฒ ๊ฐ๋ ์ฑ์ ๋์ด๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
(ํ์ง๋ง ์ฃผ์์ ๋ฏธ๋์ ๋๋ฅผ ์ํด์๋ผ๋ ์ต๊ด์ ์ผ๋ก ๋ฌ์)
'๐ป DEV > ใด problems' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS) : ๋จ์ด ๋ณํ (0) | 2021.09.27 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํ : ์ด์ค์ฐ์ ์์ํ (0) | 2021.07.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ : ๋์คํฌ ์ปจํธ๋กค๋ฌ (0) | 2021.07.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๋ ฌ : H-Index (0) | 2021.07.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ํ์ : ์นดํซ (0) | 2021.07.13 |
๋๊ธ