[Algorithm] 2798 λΈλμ (μμ νμ)
π₯ λ¬Έμ
μΉ΄μ§λ Έμμ μ μΌ μΈκΈ° μλ κ²μ λΈλμμ κ·μΉμ μλΉν μ½λ€. μΉ΄λμ ν©μ΄ 21μ λμ§ μλ νλ λ΄μμ, μΉ΄λμ ν©μ μ΅λν ν¬κ² λ§λλ κ²μμ΄λ€. λΈλμμ μΉ΄μ§λ Έλ§λ€ λ€μν κ·μ μ΄ μλ€.
νκ΅ μ΅κ³ μ λΈλμ κ³ μ κΉμ μΈμ μλ‘μ΄ λΈλμ κ·μΉμ λ§λ€μ΄ μκ·Ό, μ°½μμ΄μ κ²μνλ €κ³ νλ€.
κΉμ μΈ λ²μ μ λΈλμμμ κ° μΉ΄λμλ μμ μ μκ° μ°μ¬ μλ€. κ·Έ λ€μ, λλ¬λ Nμ₯μ μΉ΄λλ₯Ό λͺ¨λ μ«μκ° λ³΄μ΄λλ‘ λ°λ₯μ λλλ€. κ·Έλ° νμ λλ¬λ μ«μ Mμ ν¬κ² μΈμΉλ€.
μ΄μ νλ μ΄μ΄λ μ νλ μκ° μμ Nμ₯μ μΉ΄λ μ€μμ 3μ₯μ μΉ΄λλ₯Ό 골λΌμΌ νλ€. λΈλμ λ³ν κ²μμ΄κΈ° λλ¬Έμ, νλ μ΄μ΄κ° κ³ λ₯Έ μΉ΄λμ ν©μ Mμ λμ§ μμΌλ©΄μ Mκ³Ό μ΅λν κ°κΉκ² λ§λ€μ΄μΌ νλ€.
Nμ₯μ μΉ΄λμ μ¨μ Έ μλ μ«μκ° μ£Όμ΄μ‘μ λ, Mμ λμ§ μμΌλ©΄μ Mμ μ΅λν κ°κΉμ΄ μΉ΄λ 3μ₯μ ν©μ κ΅¬ν΄ μΆλ ₯νμμ€.
π€ νμ΄ λ°©λ²
- 3μ€ forλ¬Έμ μ΄μ©ν μμ νμ
let sum = sortedCard[i] + sortedCard[j] + sortedCard[k]
- 3μ₯μ μΉ΄λλ₯Ό κ³¨λΌ μΉ΄λμ ν©μ ꡬνλ€.
if answer < sum && sum <= M { answer = sum }
- μΉ΄λμ ν©μ΄ Mκ³Ό λ κ°κΉμ°λ©΄ answerμ μΉ΄λμ ν©μ λ£λλ€.
π©π»π» Swift Code
import Foundation
let num = (readLine() ?? "").split(separator: " ").map{Int($0) ?? 0}
let N = num[0]
let M = num[1]
if 3 <= N && N <= 100 && 10 <= M && M <= 300000 {
let card = (readLine() ?? "").split(separator: " ").map{Int($0) ?? 0}
if 0 < card.min()! && card.max()! <= 100000 {
let sortedCard = card.sorted()
var answer = 0
for i in 0..<sortedCard.count-2 {
for j in i+1..<sortedCard.count-1 {
for k in j+1..<sortedCard.count {
let sum = sortedCard[i] + sortedCard[j] + sortedCard[k]
if answer < sum && sum <= M {
answer = sum
}
}
}
}
print(answer)
}
}
2798λ²: λΈλμ
첫째 μ€μ μΉ΄λμ κ°μ N(3 ≤ N ≤ 100)κ³Ό M(10 ≤ M ≤ 300,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€μλ μΉ΄λμ μ°μ¬ μλ μκ° μ£Όμ΄μ§λ©°, μ΄ κ°μ 100,000μ λμ§ μλ μμ μ μμ΄λ€. ν©μ΄ Mμ λμ§ μλ μΉ΄λ 3μ₯
www.acmicpc.net