MUKER_DEV with iOS

[swift] λ°±μ€€ 2108번 : 톡계학 λ³Έλ¬Έ

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

[swift] λ°±μ€€ 2108번 : 톡계학

MUKER 2022. 9. 22. 11:34
 

2108번: 톡계학

첫째 쀄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진닀. 단, N은 ν™€μˆ˜μ΄λ‹€. κ·Έ λ‹€μŒ N개의 μ€„μ—λŠ” μ •μˆ˜λ“€μ΄ 주어진닀. μž…λ ₯λ˜λŠ” μ •μˆ˜μ˜ μ ˆλŒ“κ°’μ€ 4,000을 λ„˜μ§€ μ•ŠλŠ”λ‹€.

www.acmicpc.net

 


 

λ‚˜μ˜ 풀이

import Foundation

//μ‚°μˆ ν‰κ·  : N개의 μˆ˜λ“€μ˜ 합을 N으둜 λ‚˜λˆˆ κ°’
//쀑앙값 : N개의 μˆ˜λ“€μ„ μ¦κ°€ν•˜λŠ” μˆœμ„œλ‘œ λ‚˜μ—΄ν–ˆμ„ 경우 κ·Έ 쀑앙에 μœ„μΉ˜ν•˜λŠ” κ°’
//μ΅œλΉˆκ°’ : N개의 μˆ˜λ“€ 쀑 κ°€μž₯ 많이 λ‚˜νƒ€λ‚˜λŠ” κ°’
//λ²”μœ„ : N개의 μˆ˜λ“€ 쀑 μ΅œλŒ“κ°’κ³Ό μ΅œμ†Ÿκ°’μ˜ 차이

let T = Int(readLine()!)!
var A = [Int]()
var D = [Int: Int]()
var A2 = [Int]()
// 인풋값(T)을 λ°°μ—΄ν•΄ μ‚½μž…
for _ in 1...T {
    A.append(Int(readLine()!)!)
}

// 3. μ΅œλΉˆκ°’ κ΅¬ν•˜κΈ°
// λ”•μ…”λ„ˆλ¦¬(D)에 값을 ν•˜λ‚˜μ”© λ„£μœΌλ©΄μ„œ μ€‘λ³΅λ˜λ©΄ value값이 +1 됨.
for i in A {
    if D[i] == nil {
        D[i] = 1
    } else {
        D[i]! += 1
    }
}
// D μ΅œλΉˆκ°’μ„ 가지고 μžˆλŠ” keyλ₯Ό A2배열에 λ‹΄μ•„μ€€λ‹€.
for i in D.keys {
    if D[i] == D.values.max() {
        A2.append(i)
    }
}

print(Int(round(Double(A.reduce(0) { $0 + $1 }) / Double(T))))
print(A.sorted()[T/2])
print(A2.count > 1 ? A2.sorted()[1] : A2[0])
print(A.max()! - A.min()!)
90060kb 412ms 476b