๐ ํฐ ์์ ๋ฒ์น ๋ฌธ์
๐ง ๋ฌธ์
๋ค์ํ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ๋, ์ฃผ์ด์ง ์๋ค์ M๋ฒ ๋ํ์ฌ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ง๋๋ ๋ฒ์น์ ํฐ ์์ ๋ฒ์น์ด๋ผ๊ณ ํ์.
๋จ, ๋ฐฐ์ด์ ํน์ ํ ์ธ๋ฑ์ค(๋ฒํธ)์ ํด๋นํ๋ ์๊ฐ ์ฐ์ํด์ K๋ฒ์ ์ด๊ณผํ์ฌ ๋ํด์ง ์ ์๋ ๊ฒ์ด ์ด ๋ฒ์น์ ํน์ง์ด๋ค.
(์ธ๋ฑ์ค๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ์๋ผ๊ณ ๊ฐ์ ํ๋ค.)
โ ์ ๋ ฅ ์กฐ๊ฑด
1. ์ฒซ์งธ ์ค์ N(2 <= N <= 1,000), M(1 <= M <= 10,000), K(1 <= L <= 10,000)์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค.
2. ๋์งธ ์ค์ N๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค. ๋จ, ๊ฐ๊ฐ์ ์์ฐ์๋ 1์ด์ 10,000 ์ดํ์ ์๋ก ์ฃผ์ด์ง๋ค.
3. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ K๋ ํญ์ M๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
โ ์ถ๋ ฅ ์กฐ๊ฑด
1. ์ฒซ์งธ ์ค์ ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ผ ๋ํด์ง ๋ต์ ์ถ๋ ฅํ๋ค.
โ ์ ๋ ฅ ์์ | โ ์ถ๋ ฅ ์์ |
5 8 3 2 4 5 4 6 |
46 |
๐ง ์์ด๋์ด
1) ์ ๋ ฅ๊ฐ
- ์ฐ์ N๊ฐ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด์ ์์ฑํ๊ณ , ๋์งธ์ค์ ์ ๋ ฅ๋ฐ์ ์์ฐ์๋ค์ ์ ์ฅํ๋ค.
- ์๊ฐ ๊ฐ์๋ ์ธ๋ฑ์ค๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ์๋ก ์ฌ๊ธฐ๊ธฐ ๋๋ฌธ์, ๋์งธ์ค์ ์ ๋ ฅ๋ฐ๋ ์๋ค ์ค ๊ฐ์ฅ ํฐ ์๊ฐ ์ค๋ณต๋์ด ์๋ ๊ฒฝ์ฐ
K๊ฐ์ ์๊ด์์ด ์ต๋๊ฐ * M ์ ํตํด ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. (์๋์ ์ ์ฐธ๊ณ - 6+6+6+6+6+6+6+6)
โ ์ ๋ ฅ ์์ | โ ์ถ๋ ฅ ์์ |
5 8 3 2 4 5 6 6 |
48 |
- ์ต๋๊ฐ์ด ๋์ถ๋๊ธฐ ์ํด์๋ ๋์งธ์ค์ ์ ๋ ฅ๋ฐ๋ ์๋ค ์ค (์ต๋๊ฐ * K) + ๊ทธ๋ค์ ์ต๋๊ฐ + (์ต๋๊ฐ * M-k-1)์ ๊ณ์ฐํด์ผ ํ๋ค.
โ ์ ๋ ฅ ์์ | โ ์ถ๋ ฅ ์์ |
5 8 3 2 4 5 4 6 |
46 |
์ด ์ํฉ์ ์๋ก ๋ค์ด๋ณด์๋ฉด N = 5 / M = 8 / K = 3์ด๋ค.
์ฆ, N๊ฐ์ ์ซ์๊ฐ ๋์งธ์ค์ ์ ๋ ฅ๋๊ณ ํ ์ธ๋ฑ์ค์ ํด๋นํ๋ ์๋ ์ฐ์์ผ๋ก ์ต๋ 3๋ฒ๊น์ง ๋ํด์ง ์ ์์ผ๋ฉฐ ์ด 8๋ฒ์ ๋ง์ ์ ํด์ผ ํ๋ค.
๊ฒฐ๊ณผ๋ก ์ต๋๊ฐ์ ๋ด์ผ ํ๋ฏ๋ก ์ต๋๊ฐ์ ์ต๋ํ ๋ง์ด ๋ํด์ผ ํ๋ค.
(6+6+6)=> ์ด 5๋ฒ์ ๋ง์ ์ด ๋จ์๊ณ ํ ์ธ๋ฑ์ค์ ํด๋นํ๋ ์๋ ์ฐ์์ผ๋ก 3๋ฒ๊น์ง ๋ํด์ง ์ ์์ผ๋ ๊ทธ ๋ค์์ผ๋ก ํฐ ์์ธ 5๋ฅผ ํ ๋ฒ ๋ํด์ค๋ค.
(6+6+6)+5 => ์ด 4๋ฒ์ ๋ง์ ์ด ๋จ์๊ณ ์ค๊ฐ์ 5๋ฅผ ํ๋ฒ ๋ํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ค์ ์ต๋๊ฐ์ธ 6์ ๋ํ ์ ์๊ฒ ๋์๋ค.
(6+6+6)+5+(6+6+6) => ์ด 1๋ฒ์ ๋ง์ ์ด ๋จ์๊ณ 6์ 3๋ฒ ๋ํ๊ธฐ ๋๋ฌธ์ ์ด์ 5๋ฅผ ๋ํด ์ฐ์์ ๋์ด์ผ ํ๋ค.
(6+6+6)+5+(6+6+6)+5 => ์ด 0๋ฒ์ ๋ง์ ์ด ๋จ์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก 46์ ์ถ๋ ฅํ๋ค.
์ข ๋ ๊ฐ๋จํ๊ฒ ๊ณต์ํ ํด๋ณด์. ์์ ์๋ฅผ ๋ณด๋ฉด (6+6+6)+5 ๊ฐ ๋ฐ๋ณต๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
M = 8์ผ ๋, ์ต๋๊ฐ์ธ 6์ด ์ผ๋งํผ ๋ํด์ง๋์ง๋ฅผ ์์๋ณด์.
๋ฐ๋ณต๋๋ (6+6+6)+5๋ฅผ ํ๋์ ๋ฉ์ด๋ฆฌ๋ผ๊ณ ์๊ฐํ๋ฉด 8 ์์๋ 2๊ฐ๊ฐ ๋ค์ด๊ฐ ์ ์๋ค. ํ ๋ฉ์ด๋ฆฌ ์์ 6์ด 3๊ฐ์ฉ ๋ค์ด์์ผ๋
์ต๋๊ฐ์ธ 6์ ์ด 6๋ฒ ๋ํด์ง๋ค. ์์ผ๋ก ๋ํ๋ด๋ฉด M // (K+1) * K๋ฒ ๋ํด์ง๋ค.
๋ง์ฝ M = 9๋ผ๋ฉด? 2๊ฐ์ ๋ฉ์ด๋ฆฌ๊ฐ ๋ค์ด๊ฐ๊ณ ๋ 1์ด ๋จ๋๋ค.
์ด ์ํฉ์ ์ด๋ฑํ์๋ ๋ฐฐ์ด ์ฐ์ฐ์ธ '๋๋จธ์ง ์ฐ์ฐ'์ ํ์ฉํ ์ ์๋ค.
9 / 4 = ๋ชซ์ด 2์ด๊ณ ๋๋จธ์ง๊ฐ 1์ด๋ค. ๋๋จธ์ง๋ ์ ๋ 4์ด์์ผ ์ ์๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ๋๋จธ์ง๊ฐ ์ด๋ค ์๊ฐ ๋์ค๋ ๋ฉ์ด๋ฆฌ๊ฐ 2๋ฒ ๋ฐ๋ณต๋ ํ์ด๋ฏ๋ก ์ต๋๊ฐ์ธ 6์ด ๋ํด์ง ์์๋ ์ํฉ์ด ๋๋ค.
[(6+6+6)+5] + [(6+6+6)+5] + ?
๋ฐ๋ผ์ ์ผ๋ฐํ์ํค๋ฉด,
{M // (K+1) * K} + {M % (K+1)}๊ฐ ๋๋ค.
๊ทธ๋ผ ๋๋ฒ์งธ๋ก ํฐ ๊ฐ์ธ 5๋ ์ผ๋งํผ ๋ํด์ง๋์ง ์์๋ณด์.
M = 8์ผ๋, 2๋ฒ
M = 9์ผ๋, 2๋ฒ
M = 10์ผ๋, 2๋ฒ
M = 11์ผ๋, 2๋ฒ
M = 12์ผ๋, 3๋ฒ
๋ฐ๋ผ์ ์ผ๋ฐํ์ํค๋ฉด M // (K+1)์ด ๋๋ค.
์ด๋ฅผ ํ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์.
๐ง ์ฝ๋ ์์ฑ
# split์ผ๋ก ๋ถ๋ฆฌ๋ N, M, K๊ฐ ์ํ ๋ฐฐ์ด์ mapํจ์๋ฅผ ํตํด int๋ก ํ๋ณํํ ํ ๊ฐ๊ฐ์ ๋ณ์์ ์ ์ฅํ๋ค.
N, M, K = map(int, input().split())
# list()๋ฅผ ํตํด ๋์งธ์ค์ ์
๋ ฅ๋ฐ๋ ์๋ค์ ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค.
InputArray = list(map(int, input().split()))
# ์ต๋๊ฐ๊ณผ ๊ทธ ๋ค์์ผ๋ก ํฐ ๊ฐ์ ์์๋ด๊ธฐ ์ํด ๋ด์ฅํจ์ .sort()๋ฅผ ์ด์ฉํ๋ค
# ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์ํด์๋ reverse = True ๋ฅผ ๋ฃ์ด์ฃผ์ด์ผ ํจ. ๋ํดํธ๋ ์ค๋ฆ์ฐจ์
InputArray.sort(reverse=True) # .sort()ํจ์๋ ๋ฆฌํด๊ฐ์ด ์์ !!์ฃผ์!!
result = 0 # ๊ฒฐ๊ณผ๋ก ๋ฐํํ ๋ณ์์์ฑ
if(InputArray[0] == InputArray[1]): # ๋ง์ฝ ์ต๋๊ฐ๊ณผ ๊ทธ ๋ค์ ํฐ ๊ฐ์ด ๊ฐ๋ค๋ฉด
result = InputArray[0] * M
else:
max_count = int(M / (K+1)) * K + M % (K+1) # ์ต๋๊ฐ์ด ๋ํด์ง ํ์
second_count = int(M / (K+1)) # ๋๋ฒ์งธ ํฐ ๊ฐ์ด ๋ํด์ง ํ์
result = max_count * InputArray[0] + second_count * InputArray[1]
print(result)
'python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] #04 ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ-๊ฐ๋ฏธ์ ์ฌ (0) | 2022.07.03 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] #03 ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ-1๋ก ๋ง๋ค๊ธฐ (0) | 2022.07.03 |
[error] TypeError: 'list' object cannot be interpreted as an integer (0) | 2022.05.12 |
[์ฝํ ] #01 ์คํ์ฑํ ๋ฐฉ (0) | 2022.05.12 |
[์๊ณ ๋ฆฌ์ฆ] #01 ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ-๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ (0) | 2022.05.02 |