산술평균과 중앙값, 범위를 구하는 방법은 쉽지만 최빈값을 구하기 위해서는 조금 고민을 해야합니다.
저같은 경우에는 딕셔너리를 사용하여 해결하였습니다.
딕셔너리에 값을 넣어 정렬을 한 후 최빈값이 2개라면 그중 후자를 출력할 수 있도록 만들었습니다.
import Foundation
let num = Int(readLine()!)!
var arr:[Int] = []
for _ in 1...num {
arr.append(Int(readLine()!)!)
}
// 1. 산술평균 구하기
var sum = 0
arr.forEach { sum+=$0 }
print(Int(Double(Double(sum)/Double(arr.count)).rounded()))
// 2. 중앙값 구하기
arr.sort()
print(arr[arr.count/2])
// 3. 최빈값 구하기
var tmp: [Int:Int] = [:]
for i in arr {
if tmp[i] == nil {
tmp[i] = 1
} else {
tmp[i]! += 1
}
}
var tmp2 = tmp.sorted(by: { $0.value == $1.value ? $0.key < $1.key : $0.value > $1.value })
var pre1 = tmp2.first
tmp2.removeFirst()
var pre2 = tmp2.first
if pre1?.value == pre2?.value {
print(pre2!.key)
} else {
print(pre1!.key)
}
// 4. 범위 구하기
print(arr.max()!-arr.min()!)
'Algorithm > Baekjoon' 카테고리의 다른 글
Swift - 백준 1003번 피보나치 함수 (0) | 2024.08.25 |
---|---|
Swift - 백준 4949번 균형잡힌 세상 (0) | 2024.08.22 |
Swift - 백준 7568번 덩치 (0) | 2024.08.21 |
Swift - 백준 10773번 제로 (0) | 2024.08.20 |
Swift - 백준 2231 분해합 (0) | 2024.08.20 |