์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
๋ฌธ์ ์ค๋ช
์คํธ๋ฆฌ๋ฐ ์ฌ์ดํธ์์ ์ฅ๋ฅด ๋ณ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋ ๊ฐ์ฉ ๋ชจ์ ๋ฒ ์คํธ ์จ๋ฒ์ ์ถ์ํ๋ ค ํฉ๋๋ค. ๋ ธ๋๋ ๊ณ ์ ๋ฒํธ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๋ ธ๋๋ฅผ ์๋กํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋ ธ๋๊ฐ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
- ์ฅ๋ฅด ๋ด์์ ์ฌ์ ํ์๊ฐ ๊ฐ์ ๋ ธ๋ ์ค์์๋ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๋ ธ๋๋ฅผ ๋จผ์ ์๋กํฉ๋๋ค.
๋ ธ๋์ ์ฅ๋ฅด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด 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):
answer = []
dict_music = {}
dict_rank = {}
for i in range(len(genres)):
if genres[i] in dict_music:
dict_music[genres[i]].append((plays[i], i))
dict_rank[genres[i]] += plays[i]
else:
dict_music[genres[i]] = [(plays[i], i)]
dict_rank[genres[i]] = plays[i]
dict_rank = sorted(dict_rank.items(), key=lambda x: x[1], reverse=True)
for key in dict_rank:
chk = 0
dict_music[key[0]] = sorted(dict_music[key[0]], key = lambda x : (-x[0], x[1]))
for i in dict_music[key[0]]:
answer.append(i[1])
chk += 1
if chk == 2:
break
return answer
# input
# genres = ["classic", "pop", "classic", "classic", "pop"]
# plays = [500, 600, 150, 800, 2500]
# output ์ฅ๋ฅด๋ณ๋ก ๋ค์ ํ์ ๋์ ์์๋๋ก 2๊ฐ index ์ถ๋ ฅ
# [4, 1, 3, 0]
# dict_music --> index์ ํจ๊ป ํํ๋ก ์ฌ์ value ๋ด๊ธฐ
# dict_rank --> ํ๋ ์ด ํ์ ํฉํ ๊ฐ ๋ฃ๊ธฐ
# sorted, lambda๋ก ๋์
๋๋ฆฌ ์ ๋ ฌ
- ํํ, ๋์ ๋๋ฆฌ ์๋ฃํ ํ์
- ๋์ ๋๋ฆฌ ์ ๋ ฌํ๊ธฐ
- lambda ํ์ฉํ๊ธฐ
lambda๋ก ์ ๋ ฌ ์ฐธ๊ณ : dailyheumsi.tistory.com/67
velog.io/@k904808/Lambda-%ED%91%9C%ED%98%84%EC%8B%9D..-%EC%9C%BC%EC%9C%BC%EC%9C%BC
'Algorithms > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ/ํ 1๋ฒ lv2 (0) | 2021.03.05 |
---|---|
lv1. ์ ๊ท ์์ด๋ ์ถ์ฒ - ์ ๊ทํํ์ (0) | 2021.03.02 |
ํด์ - lv2 ์์ฅ (1) | 2021.02.25 |
ํด์ lv2. ์ ํ๋ฒํธ ๋ชฉ๋ก (๋ฆฌ์คํธ vs ํด์) (1) | 2021.02.25 |
ํด์ - ์์ฃผํ์ง ๋ชปํ ์ ์ (zip ์๋ฃํ, collections ์๋ฃํ) (2) | 2021.02.23 |