๐ 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์ ์ ์ฅํ๋ค.
'๐ Problem Solving > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๋คํธ์ํฌ / Python (0) | 2021.06.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๋์คํฌ ์ปจํธ๋กค๋ฌ / Python (0) | 2021.06.17 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv2] ๋ฉ์ฉกํ ์ฌ๊ฐํ / Python (0) | 2021.06.16 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv2] ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ / Python (0) | 2021.06.16 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv2] ๋ฌธ์์ด ์์ถ / Python (0) | 2021.06.15 |