๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ•ด์‹œ '๋ฒ ์ŠคํŠธ์•จ๋ฒ”' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2023. 2. 28.
728x90
๋ฐ˜์‘ํ˜•
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

"""
์ŠคํŠธ๋ฆฌ๋ฐ ์‚ฌ์ดํŠธ์—์„œ ์žฅ๋ฅด ๋ณ„๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ 
๋‘ ๊ฐœ์”ฉ ๋ชจ์•„ ๋ฒ ์ŠคํŠธ ์•จ๋ฒ”์„ ์ถœ์‹œํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋ž˜๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉฐ,
๋…ธ๋ž˜๋ฅผ ์ˆ˜๋กํ•˜๋Š” ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ์†ํ•œ ๋…ธ๋ž˜๊ฐ€ ๋งŽ์ด ์žฌ์ƒ๋œ ์žฅ๋ฅด๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.
2. ์žฅ๋ฅด ๋‚ด์—์„œ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.
3. ์žฅ๋ฅด ๋‚ด์—์„œ ์žฌ์ƒ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์€ ๋…ธ๋ž˜ ์ค‘์—์„œ๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์€ ๋…ธ๋ž˜๋ฅผ ๋จผ์ € ์ˆ˜๋กํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋ž˜์˜ ์žฅ๋ฅด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด genres์™€ ๋…ธ๋ž˜๋ณ„ ์žฌ์ƒ ํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 
์ •์ˆ˜ ๋ฐฐ์—ด plays๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋ฒ ์ŠคํŠธ ์•จ๋ฒ”์— ๋“ค์–ด๊ฐˆ ๋…ธ๋ž˜์˜ ๊ณ ์œ  ๋ฒˆํ˜ธ๋ฅผ 
์ˆœ์„œ๋Œ€๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.
"""

def solution(genres, plays):
    answer = []
    site = {}
    for i, (genre, play) in enumerate(zip(genres,plays)):
        if genre in site.keys():
            site[genre] = [site[genre][0]+play, site[genre][1]+[[play,i]]]
        else:
            site[genre] = [play, [[play,i]]]
            
    for _, indexs in sorted(site.items(), key=lambda x: -x[1][0]):
        for index in sorted(indexs[1], key=lambda x: -x[0])[:2]:
            answer.append(index[1])
    return answer

"""
{'classic': [1450, [[500, 0], [150, 2], [800, 3]]], 'pop': [3100, [[600, 1], [2500, 4]]]}

๋‚˜๋Š” ์œ„์˜ ๋”•์…”๋„ˆ๋ฆฌ์ฒ˜๋Ÿผ ์žฅ๋ฅด๋ณ„๋กœ ์ดํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ณ , 
ํ”Œ๋ ˆ์ดํšŸ์ˆ˜์™€ ์ธ๋ฑ์Šค๊ฐ’์„ ์ €์žฅํ•˜์—ฌ sortํ•˜์—ฌ ์“ฐ๋ ค๊ณ  ํ–ˆ๋‹ค.

- 18~22 line
๋จผ์ € site๋ผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ for๋ฌธ์„ ๋Œ์•„ ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค.

- 24 line
๊ทธ๋ฆฌ๊ณ  ๋”•์…”๋„ˆ๋ฆฌ์•„์ดํ…œ์„ ์ดํ•ฉ(1450, 3100)์„ ๊ธฐ์ค€์œผ๋กœ ์†ŒํŠธํ•˜์—ฌ ํŠœํ”Œ์„ _์™€ indexs๋กœ ๋‚˜๋ˆด๋‹ค.

- 25 line
๊ทธ indexs([1450, [[500, 0], [150, 2], [800, 3]])๋ฅผ ๋‹ค์‹œ
ํ”Œ๋ ˆ์ดํšŸ์ˆ˜๊ฐ€ ํฐ์ˆœ(500, 150, 800 -> 800, 500, 150)์œผ๋กœ ์†ŒํŠธํ•˜์˜€๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ทธ sortํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ตœ๋Œ€ 2๊ฐœ([:2])๊นŒ์ง€๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ๋ก€๋Œ€๋กœ answer์— ๋„ฃ์—ˆ๋‹ค.
๋„ฃ๋Š”๊ฑด [[500, 0], [150, 2], [800, 3]]์—์„œ ์ธ๋ฑ์Šค๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค. (index[1])

"""
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€