๐Ÿ’ป์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œํ’€์ด11

์ง€๋ฏผ์„œยท2023๋…„ 3์›” 14์ผ
0

coding test

๋ชฉ๋ก ๋ณด๊ธฐ
11/30

Chapter9. ํ•ด์‹œ

[๋ฌธ์ œ37] ๋ฒ ์ŠคํŠธ ์•จ๋ฒ” - Level3

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

1. ์†ํ•œ ๋…ธ๋ž˜๊ฐ€ ๋งŽ์ด ์žฌ์ƒ๋œ ์žฅ๋ฅด๋ฅผ ๋จผ์ € ์ˆ˜๋ก

2. ์žฅ๋ฅด ๋‚ด์—์„œ ๋งŽ์ด ์žฌ์ƒ๋œ ๋…ธ๋ž˜๋ฅผ ๋จผ์ € ์ˆ˜๋ก

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

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

[์ œํ•œ์‚ฌํ•ญ]

  • genres{i]๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ i์ธ ๋…ธ๋ž˜์˜ ์žฅ๋ฅด
  • plays{i]๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ i์ธ ๋…ธ๋ž˜๊ฐ€ ์žฌ์ƒ๋œ ํšŸ์ˆ˜
  • genres์™€ plays์˜ ๊ธธ์ด๋Š” ๊ฐ™์œผ๋ฉฐ, ์ด๋Š” 1 ์ด์ƒ 10,000์ดํ•˜
  • ์žฅ๋ฅด ์ข…๋ฅ˜๋Š” 100๊ฐœ ๋ฏธ๋งŒ
  • ์žฅ๋ฅด์— ์†ํ•œ ๊ณก์ด ํ•˜๋‚˜๋ผ๋ฉด, ํ•˜๋‚˜์˜ ๊ณก๋งŒ ์„ ํƒ
  • ๋ชจ๋“  ์žฅ๋ฅด๋Š” ์žฌ์ƒ๋œ ํšŸ์ˆ˜๊ฐ€ ๋‹ค๋ฆ„.

[์ฝ”๋“œ์ž‘์„ฑ]

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ •๋ฆฌ
    //enumerate()ํ•จ์ˆ˜๋Š” ์ธ๋ฑ์Šค์™€ ์›์†Œ๋กœ ์ด๋ฃจ์–ด์ง„ ํŠœํ”Œ(tuple)์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.
def solution(genres, plays):
	answer = []
    info = {}
    gens = {}
    
    for idx, (gen, play) in enumerate(zip(genres, plays)):
    	if gen not in info:
        	info[gen] = [(idx, play)]
        else:
        	info[gen].append((idx, play))
            
        gens[gen] = gens.get(gen, 0) + play
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— ๋งž๊ฒŒ ํƒ์ƒ‰
answer = []
for(gen, _) in sorted(gens.items(), key=lambda X:x[1], reverse=True):
	for(idx,_) in sorted(info[gen], key=lambda x:x[1], reverse=True)[:2]:
    	answer.append(idx)

[์ „์ฒด์ฝ”๋“œ]

def solution(genres, plays):
	answer = []
    
    info = {}
    gens = {}
    
    for idx, (gen, play) in enumerate(zip(genres, plays)):
    	if gen not in info:
        	info[gen] = [(idx, play)]
        else:
        	info[gen].append((idx, play))
            
        gens[gen] = gens.get(gen, 0) + play
        
    for(gen, _) in sorted(gens.items(), key=lambda X:x[1], reverse=True):
	for(idx,_) in sorted(info[gen], key=lambda x:x[1], reverse=True)[:2]:
    	answer.append(idx)
        
    return answer
profile
๐Ÿ’ป + ๐ŸŽฅ

0๊ฐœ์˜ ๋Œ“๊ธ€