[μκ³ λ¦¬μ¦] #02 그리λ μκ³ λ¦¬μ¦-ν° μμ λ²μΉ λ¬Έμ
π ν° μμ λ²μΉ λ¬Έμ
π§ λ¬Έμ
λ€μν μλ‘ μ΄λ£¨μ΄μ§ λ°°μ΄μ΄ μμ λ, μ£Όμ΄μ§ μλ€μ 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)