[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค-Lv3] ๋ฒ ์ŠคํŠธ์•จ๋ฒ” / Python

๐Ÿ“š Problem Solving/Programmers

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฒ ์ŠคํŠธ์•จ๋ฒ”

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

programmers.co.kr

import sys
from collections import defaultdict

input = sys.stdin.readline

genres = list(map(str, input().split()))
plays = list(map(int, input().split()))


def solution(genres, plays):
    answer = []
    genresPlays = defaultdict(int)
    genresSongs = defaultdict(lambda: [])
    i = 0
    for g, p in zip(genres, plays):
        genresPlays[g] += p
        genresSongs[g].append((i, p))
        i += 1

    sortedGenres = sorted(genresPlays.items(), key=lambda x: x[1], reverse=True)

    for g in sortedGenres:
        sortedG = sorted(genresSongs[g[0]], key=lambda x: x[1], reverse=True)
        answer.append(sortedG[0][0])
        if len(sortedG) > 1:
            answer.append(sortedG[1][0])

    return answer


print(solution(genres, plays))

 

ํ•ด์„ค

ํ•ด์„ค์— ์•ž์„œ defaultdict์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ๋‹ค. defaultdict๋ž€ dict์— ์—†๋Š” ๊ฐ’์„ ๋„ฃ์„ ๊ฒฝ์šฐ ์ƒ๊ธฐ๋Š” ์—๋Ÿฌ๋ฅผ ์œ„ํ•ด ์“ฐ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ๊ธฐ์กด dict์— ์—†๋Š” ๊ฐ’์„ ๋„ฃ์œผ๋ ค๋ฉด ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋Š”๋ฐ defaultdict๋ฅผ ์ด์šฉํ•ด ์กฐ๊ฑด๋ฌธ ์—†์ด ๋” ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋กœ ๊ธฐ์กด dict์— ์—†๋Š” ๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

 

genresPlays์—๋Š” ๊ฐ ์žฅ๋ฅด ๋ณ„๋กœ ์žฌ์ƒํšŸ์ˆ˜ ํ•ฉ์„ ์ €์žฅํ•œ๋‹ค.

genresSongs์—๋Š” ๊ฐ ์žฅ๋ฅด์— ๋“ค์–ด๊ฐ„ ๊ณก์˜ ์ธ๋ฑ์Šค์™€ ์žฌ์ƒํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

genresPlays๋ฅผ ์žฌ์ƒํšŸ์ˆ˜๊ฐ€ ๋งŽ์€ ์žฅ๋ฅด ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

 

genresPlays๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด genresSongs์—์„œ ๊ทธ ์žฅ๋ฅด ์ˆœ์„œ๋Œ€๋กœ ์žฅ๋ฅด์˜ ๊ฐ ๊ณก๋“ค์˜ ์žฌ์ƒํšŸ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์žฅ๋ฅด๊ฐ€ ์ •๋ ฌ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ณก๋“ค์˜ ์žฌ์ƒํšŸ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณก๋ถ€ํ„ฐ ์ธ๋ฑ์Šค๋ฅผ answer์— ์ €์žฅํ•œ๋‹ค. ์ตœ๋Œ€ 2๊ฐœ ์”ฉ ๋…ธ๋ž˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— storedG์˜ ๊ธธ์ด๊ฐ€ 2 ์ด์ƒ์ด๋ฉด ๋‘ ๊ฐœ๋ฅผ ๋ชจ๋‘, ์•„๋‹ˆ๋ฉด ํ•œ ๊ฐœ๋งŒ answer์— ์ €์žฅํ•œ๋‹ค.