๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

โฌ› [Programmers] [Python] Level2_๊ทค ๊ณ ๋ฅด๊ธฐ

Dbswnstjd 2023. 4. 6. 10:01

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=python3 

 

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

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

programmers.co.kr

ํ’€์ด

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2๋‹จ๊ณ„ - ๊ทค ๊ณ ๋ฅด๊ธฐ
from collections import Counter
def solution(k, tangerine):
    answer = 0
    d = sorted(Counter(tangerine).items(), key = lambda x : -x[1])
    for key, value in d:
        if k <= 0:
            break
        k -= value
        answer += 1
    return answer

๋งจ ์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ๋ดค์„ ๋•Œ defaultdict๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. 

defaultdict๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด list๋กœ ๋‹ค์‹œ ๋ณ€ํ™˜ํ•ด ์ค˜์•ผํ•˜๊ณ  ๋ฒˆ๊ฑฐ๋กœ์›Œ์„œ Counter ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 

Key๋ฅผ ๊ทค์˜ ํฌ๊ธฐ, ๊ทค์˜ ํฌ๊ธฐ ๊ฐœ์ˆ˜๋ฅผ value ๊ฐ’์œผ๋กœ ๊ฐ–๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ value ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ ํ›„

k ๊ฐ€ 0 ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋ฉˆ์ถ”๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด k ์—์„œ value ๊ฐ’์„ ๋นผ์ฃผ๊ณ  ๋‚˜์„œ answer ๋ฅผ 1 ๋”ํ•ด์ค€๋‹ค. 

 

- lambda x : -x[1]์„ ํ•ด์ฃผ๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ๋œ๋‹ค. ==  sort(reverse=True)