๋ฌธ์ ์ค๋ช
ํ์ฌ์ Demi๋ ๊ฐ๋์ ์ผ๊ทผ์ ํ๋๋ฐ์, ์ผ๊ทผ์ ํ๋ฉด ์ผ๊ทผ ํผ๋ก๋๊ฐ ์์ ๋๋ค. ์ผ๊ทผ ํผ๋ก๋๋ ์ผ๊ทผ์ ์์ํ ์์ ์์ ๋จ์ ์ผ์ ์์ ๋์ ์ ๊ณฑํ์ฌ ๋ํ ๊ฐ์ ๋๋ค. Demi๋ N์๊ฐ ๋์ ์ผ๊ทผ ํผ๋ก๋๋ฅผ ์ต์ํํ๋๋ก ์ผํ ๊ฒ๋๋ค.Demi๊ฐ 1์๊ฐ ๋์ ์์ ๋ 1๋งํผ์ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ํ ๋, ํด๊ทผ๊น์ง ๋จ์ N ์๊ฐ๊ณผ ๊ฐ ์ผ์ ๋ํ ์์ ๋ works์ ๋ํด ์ผ๊ทผ ํผ๋ก๋๋ฅผ ์ต์ํํ ๊ฐ์ ๋ฆฌํดํ๋ ํจ์ solution์ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- works๋ ๊ธธ์ด 1 ์ด์, 20,000 ์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค.
- works์ ์์๋ 50000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- n์ 1,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
works | n | result |
[4, 3, 3] | 4 | 12 |
[2, 1, 2] | 1 | 6 |
[1,1] | 3 | 0 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
n=4 ์ผ ๋, ๋จ์ ์ผ์ ์์
๋์ด [4, 3, 3] ์ด๋ผ๋ฉด ์ผ๊ทผ ์ง์๋ฅผ ์ต์ํํ๊ธฐ ์ํด 4์๊ฐ๋์ ์ผ์ ํ ๊ฒฐ๊ณผ๋ [2, 2, 2]์
๋๋ค. ์ด ๋ ์ผ๊ทผ ์ง์๋ 22 + 22 + 22 = 12 ์
๋๋ค.
์
์ถ๋ ฅ ์ #2
n=1์ผ ๋, ๋จ์ ์ผ์ ์์
๋์ด [2,1,2]๋ผ๋ฉด ์ผ๊ทผ ์ง์๋ฅผ ์ต์ํํ๊ธฐ ์ํด 1์๊ฐ๋์ ์ผ์ ํ ๊ฒฐ๊ณผ๋ [1,1,2]์
๋๋ค. ์ผ๊ทผ์ง์๋ 12 + 12 + 22 = 6์
๋๋ค.
์ ์ถ๋ ฅ ์ #3
๋จ์ ์์ ๋์ด ์์ผ๋ฏ๋ก ํผ๋ก๋๋ 0์ ๋๋ค.
ํ์ด
- ์ด๊ฑฐ ์ฒ์์ ใ ใ ใ ํ๊ท ์ด๋ ํธ์ฐจ๋ก ํ๋ฐฉ์ ๊ณ์ฐ๋ ๊น ์ถ์ด์ ์ง์ง๊ณ ๋ณต๋ค๊ฐ ์๋์
- ํ ์จ์ 1์ฉ ๋นผ๋ ค๊ณ ํ๋๋ฐ ํจ์จ์ฑ ๊ฒ์ฌ ์๊ธธ๋ ๋ญ์ณ์ ๊ณ์ฐํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟจ๋๋ฐ ์๊พธ ์ค๋ฅ๊ฐ ๋...
- ์์ง? ํ๋ฉด์ 3์๊ฐ ๋ ๋ ธ๋๋ฐ ๋ฆฌ์คํธ๋ฅผ heapq๋ก ๋ฐ๊ฟ๋ฒ๋ฆฌ๊ณ ๊ณ์ ์ง์ง๊ณ ๋ณถ์ ๊ฑฐ...
- ๊ทผ๋ฐ heapq๋ก ๋ฐ๊พธ๋ฉด ๊ฐ์ ๋ฃ์ ๋ ๋ง๋ค ์๋ ์ ๋ ฌํด์ค. ๊ทธ๋์ ๊ฐ์ด ๋ฐ๋์ด์ ๊ณ์ ์คํจ๊ฐ ๋ฌ๋ค.
- ๊ฒฐ๊ตญ heapify๋ฅผ ์ง์ฐ๊ณ , ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด์ ํ์๋ค.
- ์๊ณ ๋ฆฌ์ฆ์ ์ด๊ฒ ์ ๊ฒ ์๋ํ๋ฉด์ ๊ผฌ์ด๋ ์ค์๋ค์ด ์ ์ ๋ง์์ง๋ค.
- ์ฒ์์ ๋ฑ ์ ํ๋ฉด ๊ทธ๊ฑธ๋ก๋ง ํ๊ณ , ์๋ ๋๋ ๋ค ์ง์ฐ๊ณ ๋ค์ ์ง์ผ ํ๋๋ฐ ์ฝ๋ ์ฌํ์ฉํ๋ ค๋ค ๋ณด๋ ์ฝ๊ฒ ํ ์ ์๋ ๊ฒ๋ ์๊พธ ํ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค.
import heapq # ํ์์๋ ๋ด์ฉใ
ใ
ใ
def solution(n, works):
works.sort() # heapify(works)
count_of_big, mods, answer = 1, 0, 0
while n > 0:
while len(works) > 1 and works[-1] == works[-2]: #ํฐ ์ซ์ ๋ ๊ฐ๊ฐ ๊ฐ์ ๊ฐ์ด๋ฉด ํฉ์ฒด
count_of_big += 1
works.pop(-1)
if len(works) == 1: break # ๋ฐฐ์ด์ ๊ฐ์ด ํ๊ฐ ๋ฟ์ผ ๊ฒฝ์ฐ
changes = min(n // count_of_big, works[-1] - works[-2])
if changes == 0: break
works[-1] -= changes
n -= changes * count_of_big
for i in range(len(works)-1):
answer += works[i]**2
if n == 0:
answer += count_of_big * works[-1]**2
else: # ๋จ์ ์๊ฐ์ด ์์ผ๋ฉด
changes = n // count_of_big
mods = n % count_of_big
if mods == 0:
works[-1] = max(0,works[-1] - changes)
answer += count_of_big * works[-1] ** 2
else:
works[-1] = max(0,works[-1] - changes)
answer += (count_of_big - mods) * works[-1] ** 2
answer += (mods) * max(0,works[-1]-1) ** 2
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.56ms, 10.3MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.65ms, 10.2MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (1.10ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.98ms, 10.3MB)
- ์ฝ๋๋ ์งง์ง๋ง ์๋๊ฐ ๋์ง ์๋ ๋ฐฉ์...
def solution(n, works):
if n>=sum(works):
return 0;
while n > 0:
works[works.index(max(works))] -= 1
n -= 1
answer = sum([w ** 2 for w in works])
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.02ms, 10MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.30ms, 10.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.94ms, 10.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.00ms, 10.2MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 2 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
- ์ด๊ฒ ์๋ ํ ์คํธ ๋ชฉ์ ์ ๋ง๋ ์ฝ๋, ์ต๋ํ ์ฌ์ฉ
from heapq import heapify, heappush, heappop
def solution(n, works):
heapify(works := [-i for i in works])
for i in range(min(n, abs(sum(works)))):
heappush(works, heappop(works)+1)
return sum([i*i for i in works])
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.06ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.05ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.07ms, 10.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.06ms, 10.2MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.06ms, 10.3MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.13ms, 10.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.19ms, 10.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํจ์จ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (305.75ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (319.33ms, 10.2MB)
- ํ์ง๋ง ๋ ๋น ๋ฆ์ ์ถ๊ตฌํ๋ค๊ท... ใ ก.ใ ก;
- ์ฝ์ง ํ์ง๋ง ๋ง์กฑ.
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [3์ฐจ] n์ง์ ๊ฒ์ (0) | 2023.02.27 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [3์ฐจ] ์์ถ (0) | 2023.02.26 |
ํ๋ก๊ทธ๋๋จธ์ค ์ฌํ๊ฒฝ๋ก - DFS ๋ฌธ์ (1) | 2023.02.25 |
ํ๋ก๊ทธ๋๋จธ์ค ๋จ์ด ๋ณํ -๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS) (0) | 2023.02.25 |
ํ๋ก๊ทธ๋๋จธ์ค ๋คํธ์ํฌ - ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS) (0) | 2023.02.24 |