๋ฐฑ์ค€ & ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Hash

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Hash level3 ๋ฒ ์ŠคํŠธ์•จ๋ฒ”

_cactus 2022. 3. 26. 19:24
๋ฐ˜์‘ํ˜•

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ์ฝ”๋”ฉ์—ฐ์Šต ์ค‘ level3์˜ hash ์นดํ…Œ๊ณ ๋ฆฌ์˜ "๋ฒ ์ŠคํŠธ์•จ๋ฒ”" ๋ฌธ์ œ ํ’€์ด

(๋ฌธ์ œ : ์•„๋ž˜ ๋งํฌ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡)

 

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

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

programmers.co.kr

 

๋ฌธ์ œํ’€์ด

๋ฌธ์ œ๊ฐ€ ์—„์ฒญ ์–ด๋ ต์ง€๋Š” ์•Š์€๋ฐ.. ๋‚ด ์ƒ๊ฐ์—๋Š” ์„ค๋ช…์ด ์นœ์ ˆํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

์ผ๋‹จ ๋‚ด๊ฐ€ ํ—ท๊ฐˆ๋ ธ๋˜ ์ง€์ ์€

  1. ์ „์ฒด ๊ณก๋“ค ์ค‘์—์„œ ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๊ณก์ด ํ•ด๋‹นํ•˜๋Š” ์žฅ๋ฅด๋ถ€ํ„ฐ ์•จ๋ฒ”์— ๋‹ด๋Š”๋‹ค
  2. ์žฅ๋ฅด๋ณ„๋กœ ์กฐํšŒ์ˆ˜๋ฅผ ํ•ฉํ•˜์—ฌ ๊ฐ€์žฅ ์กฐํšŒ์ˆ˜๊ฐ€ ๋†’์€ ์žฅ๋ฅด๋ถ€ํ„ฐ ์•จ๋ฒ”์— ๋‹ด๋Š”๋‹ค
๋ฐ˜์‘ํ˜•

(์•„๋ฌด๋ฆฌ ๋ฌธ์ œ ์„ค๋ช…์„ ์ฝ์–ด๋ด๋„ ๋„ˆ๋ฌด ๋ชจํ˜ธํ•˜๊ฒŒ ์จ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜์Œ)

์ฒ˜์Œ์— 1๋ฒˆ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋”๋‹ˆ 1,2,3,4,15๋ฅผ ์ œ์™ธํ•˜๊ณค ๋ชจ๋‘ ์‹คํŒจ๊ฐ€ ๋–ด๋‹ค. ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๋„ ์•„๋‹ˆ๊ณ ..

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ์—์„œ ๋ณด๋ฉด ๊ตณ์ด ์žฅ๋ฅด๋ณ„ ์กฐํšŒ์ˆ˜ ํ•ฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฑธ ๋ณด๊ณ  2๋ฒˆ์œผ๋กœ ์ ‘๊ทผํ•ด๋ดค๋‹ค. 

๊ทธ๋žฌ๋”๋‹ˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋ชจ๋‘ ํ†ต๊ณผํ•จ......

๋ญ”๊ฐ€ ๊ต‰์žฅํžˆ ํ—ˆ๋ฌดํ•˜๋‹ค ํ—ˆํ—ˆ

 

์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

######### ์ •ํ™•์„ฑ 100% #########
def solution(genres, plays):
    # initialize
    total_cnt = {genre: 0 for genre in set(genres)} 
    sorted_dic = {genre: [] for genre in set(genres)}
    idx = range(len(genres))
    ziped = list(zip(plays,genres,idx))
    # fill in dict
    for cnt,key,idx in ziped :
        total_cnt[key] += cnt
    # sort total count dict by value
    total_cnt = {k: v for k, v in sorted(total_cnt.items(), key=lambda item: -item[1])}
    for cnt,key,idx in ziped :
        sorted_dic[key].append((cnt,idx))
    res = []
    for key in total_cnt :
        res.extend([x[1] for x in sorted(sorted_dic[key],key = lambda x:(-x[0],x[1]))[:2]])
    return res
  • total_cnt : ์žฅ๋ฅด๋ณ„ ์กฐํšŒ์ˆ˜ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ  dictionary. (key: ์žฅ๋ฅด, value: ์žฅ๋ฅด์˜ ์กฐํšŒ์ˆ˜ ํ•ฉ)
  • sorted_dic : ์žฅ๋ฅด๋ณ„ ๊ฐ ๊ณก์˜ ์ •๋ณด(์กฐํšŒ์ˆ˜,๊ณ ์œ ๋ฒˆํ˜ธ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” dictionary. (key: ์žฅ๋ฅด, value: ์žฅ๋ฅด์— ํ•ด๋‹นํ•˜๋Š” ๊ณก๋“ค์˜ (์กฐํšŒ์ˆ˜,๊ณ ์œ ๋ฒˆํ˜ธ) ๋ฆฌ์ŠคํŠธ)

 

๋‚ด๊ฐ€ ์ œ์‹œํ•œ ์ฝ”๋“œ๊ฐ€ ๋„์›€์ด ๋๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ..!! ๋งˆ์นœ๋‹ค ๐Ÿ˜Š

728x90
๋ฐ˜์‘ํ˜•