๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv2] ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธํ–‰์‚ฌ (Python) - 2023 KAKAO BLIND RECRUITMENT

sssbin 2023. 2. 25. 16:45

 

https://school.programmers.co.kr/learn/courses/30/lessons/150368

 

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

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

programmers.co.kr

 

์™„์ „ํƒ์ƒ‰์„ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค.

์ค‘๋ณต์ˆœ์—ด์„ ์ด์šฉํ•ด์„œ ํ• ์ธ ๊ฐ€์ง“์ˆ˜๋ฅผ ๋จผ์ € ๊ณ„์‚ฐํ•ด์ฃผ๊ณ ,

๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๊ฐ๊ฐ users๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ

๊ฐ€๊ฒฉ >= ๊ตฌ๋งค์•ก์ด๋ฉด ํ”Œ๋Ÿฌ์Šค ๊ฐ€์ž…์ž๋ฅผ ๋Š˜๋ฆฌ๊ณ , ๊ฐ€๊ฒฉ < ๊ตฌ๋งค์•ก์ด๋ฉด ํŒ๋งค์•ก์„ ๋Š˜๋ ค

์กฐ๊ฑด์— ๋งž๋Š” ์ตœ๋Œ“๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 150368: ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธํ–‰์‚ฌ (2023 KAKAO BLIND RECRUITMENT)

from itertools import product

def solution(users, emoticons):
    per = [10, 20, 30, 40] # ํ• ์ธ ์ผ€์ด์Šค
    answer = [0, 0]
    
    for i in product(per, repeat=len(emoticons)): # ์ค‘๋ณต์ˆœ์—ด
        res = [0, 0]

        for rate, cost in users:
            total = 0 # ๊ตฌ๋งค์•ก 
            for j in range(len(emoticons)):
                if i[j] < rate: # rate๋ณด๋‹ค ํ• ์ธ์œจ์ด ํฐ ๊ฐ€๊ฒฉ๋งŒ ๊ณ„์‚ฐํ•˜๋„๋ก ํ•œ๋‹ค.
                    continue
                total += ((100 - i[j]) / 100) * emoticons[j]

            # ๊ตฌ๋งค ๋น„์šฉ์˜ ํ•ฉ์ด ์ผ์ • ๊ฐ€๊ฒฉ ์ด์ƒ์ด ๋œ๋‹ค๋ฉด, ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค์— ๊ฐ€์ž…
            if total >= cost:
                res[0] += 1
            else:
                res[1] += total

        # ์กฐ๊ฑด1 -> ์กฐ๊ฑด2 ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ตœ๋Œ“๊ฐ’ 
        if answer[0] == res[0]:
            answer[1] = max(answer[1], res[1])
        elif answer[0] < res[0]:
            answer = res
    
    return answer