[๋ฐฑ์ค 2217๋ฒ] [๐ฅ4] ๋กํ (python)
๋ฌธ์
N(1 โค N โค 100,000)๊ฐ์ ๋กํ๊ฐ ์๋ค. ์ด ๋กํ๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฐ ์ ๋ฐ ๋ฌผ์ฒด๋ฅผ ๋ค์ด์ฌ๋ฆด ์ ์๋ค. ๊ฐ๊ฐ์ ๋กํ๋ ๊ทธ ๊ตต๊ธฐ๋ ๊ธธ์ด๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค ์ ์๋ ๋ฌผ์ฒด์ ์ค๋์ด ์๋ก ๋ค๋ฅผ ์๋ ์๋ค.
ํ์ง๋ง ์ฌ๋ฌ ๊ฐ์ ๋กํ๋ฅผ ๋ณ๋ ฌ๋ก ์ฐ๊ฒฐํ๋ฉด ๊ฐ๊ฐ์ ๋กํ์ ๊ฑธ๋ฆฌ๋ ์ค๋์ ๋๋ ์ ์๋ค. k๊ฐ์ ๋กํ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋์ด w์ธ ๋ฌผ์ฒด๋ฅผ ๋ค์ด์ฌ๋ฆด ๋, ๊ฐ๊ฐ์ ๋กํ์๋ ๋ชจ๋ ๊ณ ๋ฅด๊ฒ w/k ๋งํผ์ ์ค๋์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
๊ฐ ๋กํ๋ค์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ๋กํ๋ค์ ์ด์ฉํ์ฌ ๋ค์ด์ฌ๋ฆด ์ ์๋ ๋ฌผ์ฒด์ ์ต๋ ์ค๋์ ๊ตฌํด๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ชจ๋ ๋กํ๋ฅผ ์ฌ์ฉํด์ผ ํ ํ์๋ ์์ผ๋ฉฐ, ์์๋ก ๋ช ๊ฐ์ ๋กํ๋ฅผ ๊ณจ๋ผ์ ์ฌ์ฉํด๋ ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ N์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ๊ฐ ๋กํ๊ฐ ๋ฒํธ ์ ์๋ ์ต๋ ์ค๋์ด ์ฃผ์ด์ง๋ค. ์ด ๊ฐ์ 10,000์ ๋์ง ์๋ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
2
10
15
์์ ์ถ๋ ฅ 1
20
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋งํ๋ ๋ถ๋ถ
- ์ฒ์์๋ ๊ฐ์ฅ ์์ ๋ฌด๊ฒ๋ฅผ ๋ค ์ ์๋ ๋กํ๋ง์ ๊ธฐ์ค์ผ๋ก ๋ณ๋ ฌ ์ฐ๊ฒฐ ๋กํ ๊ฐฏ์๋ฅผ ๊ณฑํ๋ค. ์ฌ๊ธฐ์ ์ถ๋ ฅ ์ด๊ณผ, ์๊ฐ ์ด๊ณผ๊ฐ ๋์ ๋ฌด๊ฑฐ์ด ๋ฌด๊ฒ์์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ํ ํ์ ๋กํ๊ฐ ๋ค ์ ์๋ ์ง๋ * ๋ณ๋ ฌ ์ฐ๊ฒฐ ๋กํ ๊ฐฏ์๋ก ๋ฐ๊พธ์ด ์ฃผ์๋ค.
์์)
$[100, 20, 10] \rightarrow [100 \times 1, 20 \times 2, 10 \times 3]$
์ฝ๋
ver(1)
import sys
n = int(sys.stdin.readline())
k = []
result = []
for i in range(n):
k.append(int(sys.stdin.readline()))
k.sort(reverse=True)
for num in range(n):
result.append(k[num] * (num+1))
print(max(result))
ver(2) - def ์ฌ์ฉ
import sys
n = int(sys.stdin.readline())
k = []
result = []
def s(k):
k.sort(reverse=True)
for j in range(n):
k[j] = k[j] * (j + 1)
return max(k)
for i in range(n):
k.append(int(sys.stdin.readline()))
print(s(k))
๋๊ธ๋จ๊ธฐ๊ธฐ