2020. 9. 2. 17:00ใ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค/๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
ํฐ ์์ ๋ฒ์น- ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค
๋ฌธ์ :
'ํฐ ์์ ๋ฒ์น'์ ์ผ๋ฐ์ ์ผ๋ก ํต๊ณ ๋ถ์ผ์์ ๋ค๋ฃจ์ด์ง๋ ๋ด์ฉ์ด์ง๋ง ๋๋น์ด๋ ๋ณธ์ธ๋ง์ ๋ฐฉ์์ผ๋ก ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๊ณ ์๋ค. ๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ค์ํ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ๋ ์ฃผ์ด์ง ์๋ค์ M๋ฒ ๋ํ์ฌ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ง๋๋ ๋ฒ์น์ด๋ค. ๋จ ๋ฐฐ์ด์ ํน์ ํ ์ธ๋ฑ์ค(๋ฒํธ)์ ํด๋นํ๋ ์๊ฐ ์ฐ์ํด์ K๋ฒ์ ์ด๊ณผํ์ฌ ๋ํด์ง ์ ์๋ ๊ฒ์ด ์ด ๋ฒ์น์ ํน์ง์ด๋ค.
์๋ฅผ ๋ค์ด ์์๋๋ก 2, 4, 5, 4, 6์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ๋ M์ด 8์ด๊ณ , K๊ฐ 3์ด๋ผ๊ณ ๊ฐ์ ํ์.
์ด ๊ฒฝ์ฐ ํน์ ํ ์ธ๋ฑ์ค์ ์๊ฐ ์ฐ์ํด์ ์ธ ๋ฒ๊น์ง๋ง ๋ํด์ง ์ ์์ผ๋ฏ๋ก ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ 6+6+6+5+6+6+6+5์ธ 46์ด ๋๋ค.
๋จ, ์๋ก ๋ค๋ฅธ ์ธ๋ฑ์ค์ ํด๋นํ๋ ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์๋ก ๋ค๋ฅธ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค. ์๋ฅผ ๋ค์ด ์์๋๋ก 3, 4, 3, 4, 3์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ๋ M์ด 7์ด๊ณ , K๊ฐ 2๋ผ๊ณ ๊ฐ์ ํ์. ์ด ๊ฒฝ์ฐ ๋ ๋ฒ์งธ ์์์ ํด๋นํ๋ 4์ ๋ค ๋ฒ์จฐ ์์์ ํด๋นํ๋ 4๋ฅผ ๋ฒ๊ฐ์ ๋ ๋ฒ์ฉ ๋ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก 4+4+4+4+4+4+4์ธ 28์ด ๋์ถ๋๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ N, ์ซ์๊ฐ ๋ํด์ง๋ ํ์ M, ๊ทธ๋ฆฌ๊ณ K๊ฐ ์ฃผ์ด์ง ๋ ๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์์ค.
์ ๋ ฅ ์กฐ๊ฑด:
- ์ฒซ์งธ ์ค์ N(2<=N<=1,000), M(1<=M<=10,000), K(1<=K<=10,000)์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค.
- ๋์งธ ์ค์ N๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค. ๋จ ๊ฐ๊ฐ์ ์์ฐ์๋ 1์ด์ 10,000 ์ดํ์ ์๋ก ์ฃผ์ด์ง๋ค.
- ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ K๋ ํญ์ M๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ ์กฐ๊ฑด:
- ์ฒซ์งธ ์ค์ ๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ผ ๋ํด์ง ๋ต์ ์ถ๋ ฅํ๋ค.
ํ์์ ์์ค ์ฝ๋๋ ์ด๋ ๋ค.
n,m,k = map(int, input().split())
array = []
array = list(map(int,input().split()))
array.sort(reverse = True)
array2 =[]
count =0
while count!=m:
for i in range(k):
if len(array2) == 8:
break
array2.append(array[0])
if len(array2) ==8:
break
array2.append(array[1])
sum =0
for i in range(m):
sum+=array2[i]
print(sum)
์์ ๋ฒ์๊ฐ ์๊ธฐ ๋๋ฌธ์ for๋ฅผ ์ด์ฉํ ์์ ๋๋ฒ ์ฌ์ฉํ๋ค.
ํ์ง๋ง ์ฑ ์ ์ ์๋ '๊ฐ์ฅ ํฐ ์๋ k๋ฒ ๋ํด์ง๊ณ , ๊ทธ ๋ค์ ํฐ ์๋ 1๋ฒ ๋ํด์ง๋ค'๋ผ๋ ํ์ด๋ฅผ ๋ด๋์๋ค.
์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋ํด์ง๋ค๋ ๊ฒ์ ์ด์ฉํด์ ํผ ๊ฒ์ด๋ค. ์๋ฅผ๋ค์ด m์ 7 k๋ 2๋ผ๊ณ ํด๋ณด์. ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด์ด 5,6,7์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉด, 7 7 6 7 7 6 7์ด๋ ๊ฒ ๋์จ๋ค. 7 7 6์ด ๋ฐ๋ณต๋๊ณ , ๋๋จธ์ง๋ก 7์ด ๋จ๋๋ค. ์ฆ 7 7 6์ k+1๋ฒ์ด๊ณ m์ k+1๋ก ๋๋๋ค๋ฉด ์์ด์ด ๋ฐ๋ณต๋๋ ์ซ์๊ฐ ๋์ฌ ๊ฒ์ด๋ค. ๊ฑฐ๊ธฐ์ k๋ฅผ ๊ณฑํ๋ฉด ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ ํ์๊ฐ ๊ณ์ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ด์ด ๋๋๊ณ ๋จ๋ ์๊ฐ ์๋ค๋ฉด ์ด๋ m์ k+1๋ก ๋๋ ๋๋จธ์ง์ด๊ธฐ ๋๋ฌธ์ ์ด ๋ํ ๋ํด์ ์ฒ๋ฆฌํด์ฃผ๋ฉด ๋๋ค.
์์ค ์ฝ๋
n,m,k = map(int,input().split())
array = []
array.append(list(map(int,input().split())))
array.sort()
first = array[n-1]
second = array[n-2]
count=0
count = (m//k+1)*k
count += m %(k+1)
result =0
result += (count) * first
result += (m-count) * second
๋ฌธ์ ๋ฅผ ํตํด ์๊ฒ ๋ ์
- ํ์๋ ๋ฐฐ์ด์ ํ๋ ๋ ์์ฑํด for๋ฅผ ๋ ๋ฒ ์ฐ๊ฒ ๋ง๋ค์๋ค. ํ์ง๋ง ์ ์๋ m์ ์๋ฅผ ๋ฎ์ถฐ๊ฐ๋ฉด์ result๊ฐ์ ๊ณ์ํด์ ๋ ์ฃผ์๋ค. ์๊ฐ๋ณต์ก๋๋ฉด์์ ์กฐ๊ธ ๋ ์ ๊ฒฝ์ ์จ์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๋ฒ์น๊ณผ ๊ฐ์ ๋ฌธ์ ๋ค์ ์์ด์ ํตํด์๋ ํ ์ ์๊ฒ ๊ตฌ๋ ์๊ฐ์ด ๋ค์๋ค.
'์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค > ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ์ฃผ์ฌ์(Swift) (0) | 2022.11.06 |
---|---|
๋ฐฑ์ค - ๋จ์ด์ํ(Swift) (0) | 2022.10.25 |
1์ด ๋ ๋๊น์ง- ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค (0) | 2020.09.02 |
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ- ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค (0) | 2020.09.02 |