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๋ฒ์งธ ์์๋ฅผ ๊ฐ์ง๊ณ ์ ๊ณฑ๊ฐ์ ๋ชจ๋ ๋ํ์ฌ ๋ฐํํ์๋ค.
์ฐธ๊ณ
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 ๋ง๊ณ ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ด๋ถํฐ ํํํ ๋ค์ ๊ณต๋ถํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๊ฒ ๋์๋ค.
'๐ Algorithm > ๐ช๐ป Python ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python - ํ๋ก๊ทธ๋๋จธ์ค Level1] ๋คํธ ๊ฒ์ (0) | 2021.01.04 |
---|---|
[Python - ํ๋ก๊ทธ๋๋จธ์ค Level2 ] ์คํฌ ํธ๋ฆฌ (0) | 2021.01.03 |
[Python - ํ๋ก๊ทธ๋๋จธ์ค Level1] ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (0) | 2021.01.03 |