๐กsolutions )
๐ฌ ๋์ ๋๋ฆฌ ์๋ฃํ์ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ
๐ฌ total_play_times ๋์ ๋๋ฆฌ์ ์ฅ๋ฅด๋ณ ์ด ์ฌ์ํ์๋ฅผ, song_dict์๋ ์ฅ๋ฅด๋ฅผ key๊ฐ์ผ๋ก, ๊ฐ ๊ณก๋ค์ ์ฌ์ํ์์ ๊ณ ์ ๋ฒํธ(๋์ค์ ์ ๋ ฌํ ๊ธฐ์ค ์์๋ก)๋ฅผ ๋ฆฌ์คํธ ํํ๋ก value์ ๋ด์๋ค.
๐ฌ sort()๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌ -> reverse = True๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ, ์ ๋ ฌํ๋ ๊ธฐ์ค์ lambda๋ก ํํ ๊ณ ์ ๋ฒํธ๋ ์์ ๊ฒ ๋จผ์ ๋์์ผ ํ๋ฏ๋ก -์์๋ก ๋ง๋ ํ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํจ.
๐ฌ ์๋ ์ ๋์ผ ๋ฌธ์ ๋ฅผ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ(heapq ๋ชจ๋ ์ฌ์ฉ)์ผ๋ก ํ์๋ ๊ฒ ์์ด์ ์ฐธ๊ณ ์ฉ์ผ๋ก๐
๐จ๐ปcode )
def solution(genres, plays):
total_play_times = {}
song_dict = {}
for i in range(len(genres)):
if genres[i] in total_play_times:
total_play_times[genres[i]] += plays[i]
else:
total_play_times[genres[i]] = plays[i]
if genres[i] in song_dict:
song_dict[genres[i]].append((plays[i], i)) # ์ฌ์ํ์, ๊ณ ์ ๋ฒํธ ์์ผ๋ก ์ ์ฅ
else:
song_dict[genres[i]] = [(plays[i], i)]
for key, val in song_dict.items():
song_dict[key] = sorted(song_dict[key], reverse=True, key= lambda x: (x[0], -x[1]))
genre_list =[]
for key, val in total_play_times.items():
genre_list.append((val, key))
genre_list.sort(reverse=True)
answer = []
for times, genre in genre_list:
cnt = 0
for i in range(len(song_dict[genre])):
song_index = song_dict[genre][i][1]
answer.append(song_index)
cnt += 1
if cnt == 2:
break
return answer
๐description )
๋ฌธ์ ์ค๋ช
์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด genres์ ๋ ธ๋๋ณ ์ฌ์ ํ์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด plays๊ฐ ์ฃผ์ด์ง ๋, ๋ฒ ์คํธ ์จ๋ฒ์ ๋ค์ด๊ฐ ๋ ธ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ์์๋๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ์ฌํญ
- genres[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋์ ์ฅ๋ฅด์ ๋๋ค.
- plays[i]๋ ๊ณ ์ ๋ฒํธ๊ฐ i์ธ ๋ ธ๋๊ฐ ์ฌ์๋ ํ์์ ๋๋ค.
- genres์ plays์ ๊ธธ์ด๋ ๊ฐ์ผ๋ฉฐ, ์ด๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- ์ฅ๋ฅด ์ข ๋ฅ๋ 100๊ฐ ๋ฏธ๋ง์ ๋๋ค.
- ์ฅ๋ฅด์ ์ํ ๊ณก์ด ํ๋๋ผ๋ฉด, ํ๋์ ๊ณก๋ง ์ ํํฉ๋๋ค.
- ๋ชจ๋ ์ฅ๋ฅด๋ ์ฌ์๋ ํ์๊ฐ ๋ค๋ฆ ๋๋ค.
์ ์ถ๋ ฅ ์
genresplaysreturn
["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]๋ฒ ๋ ธ๋๋ฅผ ๊ทธ๋ค์์ ์๋กํฉ๋๋ค.