π λ¬Έμ
π‘ μμ΄λμ΄
λ‘νλ₯Ό μ΅λ μ€λ μμΌλ‘ μ νν΄μΌ κ°λΉ κ°λ₯ν μ΅λ 무κ²λ₯Ό ꡬν μ μλ€.
μ΄ λ‘ν μ ν κ°μλ₯Ό 1 λΆν° Nκ° λͺ¨λ ν΄λ³΄κ³ μ΅λ μ€λμ κ³μ°ν΄μΌνλ€.
κ·ΈλΌμλ λ‘ν μ€λμ ν° κ² μμΌλ‘ λ΄λ¦Όμ°¨μ νλκ² μ’μλ°
νλμ 루νλ₯Ό λλ©΄μ index + 1 λ²μ§Έ λ‘νκ° νμ¬ index + 1 κ°λ₯Ό μ νν λ‘νμ€ κ°μ₯ μμ λ‘νκ° λκΈ° λλ¬Έμ΄λ€.
λ‘νλ₯Ό kκ° μ ννμ λ λ€ μ μλ
$$ μ΅λ μ€λκ° = κ°μ₯\, μμ\, λ‘ν\, μ€λ\: *\: kκ° $$
μ¬κΈ°μ κ°μ₯ μμ λ‘ν μ€λ μ 루ν μμμ λ§€λ² λ°λ‘ μ νν μ μλ€.
π Kotlin Code
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.max
fun main() {
val bufferedReader = BufferedReader(InputStreamReader(System.`in`))
val N = bufferedReader.readLine().toInt()
var answer = 0
val ropes = IntArray(N){0}
repeat(N){idx->
ropes[idx] = bufferedReader.readLine().toInt()
}
// κ°λΉν μ μλ μ΅λ μ€λ: μ΅μκ° * λ‘κ·Έ κ°―μ
// κ°λΉν μ μλ μ΅λ μ€λμ μ΅λ λ‘ν μ€λμμΌλ‘ 1κ° 2κ° ... Nκ° κ³ λ₯΄λ κ²μΌλ‘ λͺ¨λ ν΄λ΄μΌν¨.
// 맀 λΌμ΄λλ§λ€ μ΅μκ°μ ꡬνλκ² μλλΌ
// 미리 ν° μ€λμμΌλ‘ μ λ ¬ν΄λλ©΄ λ¨.
ropes.sortDescending()
ropes.forEachIndexed { index, minRopeWeight ->
// μ νν λ‘ν κ°μ == index + 1
// index + 1λ² μ§Έ λ‘νλ νμ¬ Loop μμ κ°μ₯ μμ μ€λμ λ‘ν.
val maxWeight = minRopeWeight * (index + 1)
answer = max(answer, maxWeight)
}
println(answer)
}
'Algorithm > Algorithm (λ¬Έμ νμ΄)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 15683 κ°μ (0) | 2022.10.03 |
---|---|
[λ°±μ€] 2493 ν (0) | 2022.10.03 |
[λ°±μ€] 11779 μ΅μλΉμ© ꡬνκΈ° 2 (0) | 2022.09.23 |
[LeetCode] Same Tree (0) | 2022.09.05 |
[λ°±μ€ 1158] μμΈνΈμ€ λ¬Έμ (2) | 2021.03.06 |