๋ชฉ์ฐจ
๊ทธ๋ฆฌ๋์ ๊ฐ๋
๊ทธ๋ฆฌ๋๋ ํ์ฌ ์ํฉ์์ ์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ์ธ ํ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํธ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๊ฑฐ์ค๋ฆ๋ ์์ ์ ๊ฐ์ด ๊ฐ์ฅ ํฐ ํํ ๋จ์๋ถํฐ ๋์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ด ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ด๋ค
ํฐ ์์ ๋ฒ์น
์์ด๋์ด : ( ๊ฐ์ฅ ํฐ ์๋ฅผ ์ต๋ ์ฐ์ํ์๋งํผ ๋ํด์ฃผ๊ณ + ๊ทธ ๋ค์์ ํฐ ์๋ฅผ ํ๋ฒ ๋ํด์ฃผ๊ธฐ ) ์ด ๊ณผ์ ์ ์๊ฐ ๋ํด์ง๋ ํ์๋งํผ ๋ฐ๋ณตํด์ฃผ๋ฉด ๋๋ค
๊ตฌํ
๊ฐ์ฅ ํฐ ์ ๊ตฌํ๊ธฐ : ์ธ๋ฑ์ค๊ฐ ๋ค๋ฅด๋ฉด ์๊ฐ ๊ฐ์๋ ๋ค๋ฅธ ์ ์ทจ๊ธ์ ํ๊ธฐ ๋๋ฌธ์ list๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ [0]๋ฒ์งธ ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค
๋ ๋ฒ์งธ๋ก ํฐ ์ ๊ตฌํ๊ธฐ : ๊ฐ์ ์ด์ ๋ก [1]๋ฒ์งธ ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
๋ฐ๋ณต ํ์ : ๋ฐ๋ณต ํ์๋ m๋ฒ ๋งํผ ๋ฐ๋ณต๋์ด์ผํ๋ค.
๋ฐ๋ณต ํ์๋ฅผ ์ด๋ป๊ฒ m๋ฒ๋งํผ ํ ์ ์์๊น?
count ๋ณ์๋ฅผ ํ์ฉ
์์ํ๊ฒ count ๋ณ์๋ฅผ ํ์ฉํด์ m๊ณผ ๊ฐ์์ง๋ฉด ๋ฐ๋ณต๋ฌธ์ ํ์ถํ๋๋ก ํ๋ค.
๋ด ์ฝ๋
n,m,k = map(int,input().split())
list = list(map(int, input().split()))
list.sort(reverse=True)
max = list[0]
second = list[1]
sum = 0
count=0
for _ in range(m):
for _ in range(k):
sum +=max
count += 1
if count == m:
break
sum += second
count +=1
if count ==m:
break
print(sum)
๐ก์๋ก์ด ์์ด๋์ด
๋ํ ๋ ๋ง๋ค m๊ฐ์ 1๋งํผ ๊ฐ์์์ผ์ฃผ๊ณ m์ด 0์ด ๋๋ฉด ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋๋๋ก ์ค์
while True:
for _ in range(k):
if count == m:
break
sum +=max
count += 1
sum += second
count +=1
if count ==m:
break
print(sum)
<< ์ฐจ์ด >>
for๋ฌธ์ m๋งํผ ๋ฐ๋ณตํ๋ ๊ฒ <-> while True ๋ฌธ์ผ๋ก ๋ณ๊ฒฝ
m์ด ๋๋ฉด ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ <-> m == 0 ์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ
๐๋ฐฐ์ด์
1. ๋ฐ๋ณต๋ฌธ ํ์๋ฅผ ์ด๋ป๊ฒ ์ค์ ํด์ผํ ์ง ๊ณ ๋ฏผ์ด์๋๋ฐ While True ๋ฌธ์ ์ค์ ํ๊ณ ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ ์กฐ๊ฑด์ ์ค์ ํ๋ฉด ๋๋ ๊ฒ์ด์๋ค!
2. count ๋ณ์๋ฅผ ๋ง๋ค์ด์ count ๋ณ์๋ฅผ 1์ฉ ์ฆ๊ฐ์์ผ ์ค์๋ ์๋๋ฐ m์ 1์ฉ ๊ฐ์์์ผ์ฃผ๋ ๋ฐฉ์์ผ๋ก๋ ์ฌ์ฉํ ์ ์์๋ค.
M์ด ๋ ์ปค์ง๋ค๋ฉด?
ํ์ฌ๋ M์ด ์ต๋ 10,000์ผ๋ก ์ ํด์ ธ์๋ค.
๊ทธ๋ฌ๋ ๋ง์ฝ M์ด 100์ต์ด์์ผ๋ก ์ปค์ง ๊ฒฝ์ฐ์๋ ํ์ฌ์ ๊ฐ์ ๋ฐ๋ณต๋ฌธ ์ฐ์ฐ์ ์ด์ฉํ ๊ฒฝ์ฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๋ก์ง์ ๊ตฌํํด๋ณด์!
2 4 5 4 6 ์์
๊ฐ์ฅ ํฐ ์๋ 6
๋๋ฒ์งธ๋ก ํฐ ์๋ 5
๋ฐ๋ณต๋๋ ์์ด : [6, 6, 6, 5]
๋ฐ๋ณต๋๋ ์์ด์ ๊ธธ์ด : k+1 ์ธ 4์ด๋ค
์์ด์ ๋ฐ๋ณต ํ์ : m // (k+1)
๋๋์ด๋จ์ด์ง์ง ์๋ ๊ฒฝ์ฐ : ๋๋จธ์ง ๋งํผ ํฐ ์๊ฐ ์ถ๊ฐ๋ก ๋ํด์ง๋ค.
์ฆ ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ ํ์๋
= m//(k+1)*k + m % (k+1)
์ด๋ค.
์ด์ ๋๋ฒ์งธ๋ก ํฐ ์๊ฐ ๋ํด์ง๋ ํ์๋ฅผ ๊ตฌํ ์ ์๋ค.
m - ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ ํ์ ๋ฅผ ํด์ฃผ๋ฉด ๊ตฌํ ์ ์๋ค.
n,m,k = map(int,input().split())
list = list(map(int,input().split()))
list.sort()
first = list[n-1]
second = list[n-2]
# ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ ํ์ ๊ณ์ฐ
count = 0
count += m//(k+1) * k +( m %(k+1))
sum=0
sum += count *first
sum +=( m-count) *second
print(sum)
'์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ ๊ธฐ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์ฝํ ํ์ด์ฌ : ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ (0) | 2024.05.05 |
---|---|
[DFS/BFS : python] ์ด์ฝํ ๋ด์ฉ ์ ๋ฆฌ ๋ฐ ๋ฌธ์ ํ์ด ๊ธฐ๋ก (1) | 2024.04.06 |
[๊ตฌํ: python]๊ฐ๋ ๊ณผ ๋ฌธ์ ํ์ด ์ ๋ฆฌํ๊ธฐ (1) | 2024.03.28 |
์ด์ฝํ ๊ทธ๋ฆฌ๋ : 1์ด ๋ ๋๊น์ง (0) | 2024.03.22 |
[python : ๊ทธ๋ฆฌ๋]์ซ์ ์นด๋ ๊ฒ์ , min, maxํจ์ ์ ๋๋ก ์ดํดํ๊ธฐ (0) | 2024.03.18 |