[Python - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] ๋ฐฐ์ƒ ๋น„์šฉ ์ตœ์†Œํ™”

2021. 1. 3. 02:26ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•

 

๋ฌธ์ œ๋ฅผ ์ž˜๋ชป์ดํ•ดํ•˜์—ฌ ์ฒ˜์Œ์—๋Š” ์ˆœ์—ด๊ณผ ์กฐํ•ฉ์„ ์ด์šฉํ•ด ๊ณ„์‚ฐํ•˜์˜€๋‹ค ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋ณต์žกํ•œ ์‹์ด ๋˜์–ด ์ด๊ฒŒ ๋งž๋‚˜? ํ—ท๊ฐˆ๋ ค ๋‹ค๋ฅธ๋ถ„๋“ค์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋‹ค์‹œ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๋งค๋ฒˆ for๋ฌธ ์•ˆ์—์„œ works ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•˜๋ฉฐ ๋งจ ๋งˆ์ง€๋ง‰ (์ฆ‰ ์ตœ๋Œ€๊ฐ’์„ ๊ฐ–๋Š” item)์„ 1์”ฉ ๋นผ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

for๋ฌธ๊ณผ sort ํ™œ์šฉ ํ’€์ด ๊ณผ์ •

def solution(no, works):
    for _ in range(no):
        works.sort()
        if works[-1] == 0:
            break
        works[-1] -= 1

    return sum([i*i for i in works])

 

์ •ํ™•๋„๋Š” ๋‹ค ๋งž์„ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ํšจ์œจ์„ฑ์€ ๋ชจ๋‘ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋‚˜๋Š” ํ’€์ด๋ฒ•์ด์˜€๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ํ’€์ด๊ณผ์ •์„ ๋ณด๋˜ ๋„์ค‘ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ Heap ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์‹œ ํ’€์–ด๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

ํŒŒ์ด์ฌ์˜ Heapq ๋ชจ๋“ˆ์€ MinHeap ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฅผ ๊ฐ€์ง€๊ณ  MaxHeap์œผ๋กœ ์›์†Œ๋ฅผ (-value , value) ์›์†Œ๋กœ ์ง€์ •ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

works ๋ฆฌ์ŠคํŠธ๋ฅผ MaxHeap์œผ๋กœ ๋ณ€ํ™˜ ํ›„, no ๋งŒํผ ์ˆœํšŒํ•˜๋ฉฐ ์ตœ๋Œ€๊ฐ’ -1 ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ ๋‹ค์Œ 1๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ œ๊ณฑ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค. 

์ฐธ๊ณ 

 

[Algorithm] [Python] Programmers - ๋ฐฐ์ƒ ๋น„์šฉ ์ตœ์†Œํ™”

Programmers - ๋ฐฐ์ƒ ๋น„์šฉ ์ตœ์†Œํ™” ๋ฌธ์ œ ์„ค๋ช… OO ์กฐ์„ ์†Œ์—์„œ๋Š” ํƒœํ’์œผ๋กœ ์ธํ•œ ์ž‘์—…์ง€์—ฐ์œผ๋กœ ์ˆ˜์ฃผํ•œ ์„ ๋ฐ•๋“ค์„ ๊ธฐํ•œ ๋‚ด์— ์™„์„ฑํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๊ธฐํ•œ ๋‚ด์— ์™„์„ฑํ•˜์ง€ ๋ชปํ•˜๋ฉด ์†ํ•ด ๋ฐฐ์ƒ์„ ํ•ด์•ผ

duwjdtn11.tistory.com

 

Heap ํ’€์ด ๊ณผ์ •

def solution(no, works):
    MaxHeap = []
    if no >= sum(works):
        return 0
    for i in works:
        heapq.heappush(MaxHeap,(-i,i))
    for _ in range(no):
        i = heapq.heappop(MaxHeap)[1]-1
        heapq.heappush(MaxHeap,(-i,i))
    return sum(i[1]**2 for i in MaxHeap)

 

 

์ž๋ฃŒ๊ตฌ์กฐ Heap์— ๋Œ€ํ•ด ๋ถ€์กฑํ•œ ์ ์„ ๋งŽ์ด ๋Š๋ผ๊ฒŒ ๋œ ๋ฌธ์ œ์˜€๋‹ค.. Heap ๋ง๊ณ ๋„ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ํƒ„ํƒ„ํžˆ ๋‹ค์‹œ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. 

๋ฐ˜์‘ํ˜•