티스토리 뷰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import Foundation
 
let arrayCount = Int(readLine()!)!
var array = [Int]()
for _ in 1...arrayCount{
    array.append(Int(readLine()!)!)
}
array = array.sorted(by: <)
let average = Int((Double(array.reduce(0){ $0 + $1 }) / Double(arrayCount)).rounded())
let median = array[arrayCount / 2]
let range = array.last! - array.first!
if(arrayCount == 1){
    print(average)
    print(median)
    print(array[0])
    print(range)
    exit(0)
}
var dic = [IntInt]()
var count = 1
for i in 0..<arrayCount - 1{
    if(array[i] == array[i+1]){
        count += 1
        dic[array[i]] = count
    }
    else {
        dic[array[i]] = count
        count = 1
    }
}
if(array[arrayCount - 2!= array[arrayCount - 1]){
    dic[array[arrayCount - 1]] = 1
}
var sortedDic = dic.sorted(by: { (first, second) -> Bool in
    return first.key < second.key
})
let max = {() -> Int in
    var values = [Int]()
    for i in sortedDic{
        values.append(i.value)
    }
    return values.max()!
}()
sortedDic = sortedDic.filter { (key, value) -> Bool in
    return value == max
}
let mode: Int
if(sortedDic.count == 1){
    mode = (sortedDic.first?.key)!
else {
    sortedDic = sortedDic.sorted(by: { (first, second) -> Bool in
        return first.key < second.key
    })
    mode = sortedDic[1].key
}
print(average)
print(median)
print(mode)
print(range)
cs


코드가 너무 더럽다...

어느 정도 푼 다음 채점 결과를 기다렸는데 100%에서 런타임 오류가 나길래 생각해 봤는데


N이 1일 때 최빈값을 구하는 코드로 들어가면 잘못된 인덱스를 참조하는 것이 되므로 해당 경우에 따로 처리해 준다.

'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글

1475번 '방 번호'  (0) 2018.02.23
1157번 '단어 공부'  (0) 2018.02.23
1427번 '소트인사이드'  (0) 2018.02.23
11721번 '열 개씩 끊어 출력하기'  (0) 2018.02.23
11720번 '숫자의 합'  (0) 2018.02.23
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함