MUKER_DEV with iOS

[swift] λ°±μ€€ - 2117번: λ‘œν”„ λ³Έλ¬Έ

πŸ€– μ•Œκ³ λ¦¬μ¦˜/BAEKJOON

[swift] λ°±μ€€ - 2117번: λ‘œν”„

MUKER 2023. 1. 23. 01:15
 

2217번: λ‘œν”„

N(1 ≤ N ≤ 100,000)개의 λ‘œν”„κ°€ μžˆλ‹€. 이 λ‘œν”„λ₯Ό μ΄μš©ν•˜μ—¬ 이런 μ €λŸ° 물체λ₯Ό λ“€μ–΄μ˜¬λ¦΄ 수 μžˆλ‹€. 각각의 λ‘œν”„λŠ” κ·Έ κ΅΅κΈ°λ‚˜ 길이가 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λ“€ 수 μžˆλŠ” 물체의 μ€‘λŸ‰μ΄ μ„œλ‘œ λ‹€λ₯Ό μˆ˜λ„ μžˆλ‹€. ν•˜

www.acmicpc.net

문제 ν‘ΈλŠ” 데 μžˆμ–΄ 도움이 λ˜λ„λ‘ λ‚˜μ˜ 풀이와 κ°œμ„ λœ 풀이λ₯Ό μ˜¬λ¦½λ‹ˆλ‹€.
λ˜ν•œ 풀이 ν›„ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό 보고 μ°Έκ³ ν• λ§Œν•œ 풀이도 μ˜¬λ¦½λ‹ˆλ‹€.

- λ¬Έμ œμ— 따라 λ‚˜μ˜ ν’€μ΄λ§Œ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
- ν•΄λ‹Ή 풀이듀은 풀이 쀑 ν•˜λ‚˜μΌ 뿐 μ΅œμ„ μ˜ ν’€μ΄λŠ” 아닐 수 μžˆμŠ΅λ‹ˆλ‹€.

 


 

문제 μ„€λͺ…

n개의 λ‘œν”„κ°€ μ£Όμ–΄μ§€λŠ”λ°

각각의 λ‘œν”„μ—λŠ” 물건을 λ“€ 수 μžˆλŠ” 힘이 있고

n개의 λ‘œν”„ 쀑 k개의 λ‘œν”„λ₯Ό μ‚¬μš©ν•΄μ„œ 물건을 λ“€κ²Œ 되면

λ‘œν”„κ°€ 버틸 수 μžˆλŠ” 힘이 n / k κ°€ λ©λ‹ˆλ‹€.

 

λ‘œν”„λ₯Ό λͺ‡ 개λ₯Ό μ‚¬μš©ν•˜λ“  μƒκ΄€μ—†μŠ΅λ‹ˆλ‹€.

λ‘œν”„λ₯Ό μ΄μš©ν•˜μ—¬ λ“€ 수 μžˆλŠ” μ΅œλŒ€μΉ˜λ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

 

μœ„μ²˜λŸΌ 10, 15의 νž˜μ„ 가진 2개의 λ‘œν”„κ°€ μ£Όμ–΄μ‘Œλ‹€λ©΄

2개λ₯Ό λ‹€ 썼을 μ‹œ 체약체 λ‘œν”„μΈ 10에 * 2κ°€ λ˜μ–΄ 20의 νž˜μ„ λ“€ 수 있게 λ©λ‹ˆλ‹€.

 

λ§Œμ•½ λ‘œν”„λ₯Ό ν•˜λ‚˜λ§Œ μ‚¬μš©ν•œλ‹€λ©΄

각각 10, 15만큼의 물건을 λ“€ 수 있기 λ•Œλ¬Έμ—

2개 λ‹€ 썼을 λ•Œκ°€ κ°€μž₯ μ΅œλŒ€μΉ˜ 이겠죠

 

λ§Œμ•½ 10, 15, 33의 3개의 λ‘œν”„κ°€ μ£Όμ–΄μ‘Œλ‹€λ©΄

μ΅œμ•½μ²΄ 10을 κ»΄μ„œ 3μ€„λ‘œ 듀어도 30이고

(15, 33) 2μ€„λ‘œ 듀어도 30

33 ν•˜λ‚˜λ‘œλ§Œ λ“€λ©΄ 33을 λ“œλ‹ˆ

이런 κ²½μš°λŠ” ν•œ μ€„λ‘œλ§Œ λ“œλŠ” 게 λ‚«κ² μ£ 

 


 

λ‚˜μ˜ 풀이

let count = Int(readLine()!)!
let arr = (0..<count).map { _ in Int(readLine()!)! }.sorted()
var max = 0
for i in arr.enumerated() {
   if i.element * (count - i.offset) > max {
       max = i.element * (count - i.offset)
    }
}
print(max)

 

반볡문과 인덱슀λ₯Ό ν™œμš©ν•΄ μ΅œλŒ€μΉ˜λ₯Ό κ΅¬ν–ˆμŠ΅λ‹ˆλ‹€.