포스트

213. 모의고사


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
import Foundation

func solution(_ answers:[Int]) -> [Int] {
    
    var score : [Int] = []
    var answer : [Int] = [] 
    
    var arrA : [Int] = [1,2,3,4,5]
    var arrB : [Int] = [2,1,2,3,2,4,2,5]
    var arrC : [Int] = []
    
    var scoreA : Int = 0
    var scoreB : Int = 0
    var scoreC : Int = 0
    
    while arrA.count != 10000 {
        arrA += [1,2,3,4,5]
    }
    
    while arrB.count != 10000 {
        arrB += [2,1,2,3,2,4,2,5]
    }
    
    while arrC.count != 10000 {
        arrC += [3,3,1,1,2,2,4,4,5,5]
    }
    
    
    scoreA = zip(arrA,answers).filter{$0==$1}.count
    scoreB = zip(arrB,answers).filter{$0==$1}.count
    scoreC = zip(arrC,answers).filter{$0==$1}.count
    
    score.append(scoreA)
    score.append(scoreB)
    score.append(scoreC)
    
    let max = score.max()
    
    for i in 0..<score.count{
        if max == score[i]{
            answer.append(i+1)
        }
    }

    return answer
}

zip을 사용해보고자 이렇게 만들었다. 사실 효율성에선 좋지 못한 코드이다.

굳이 안만들어도 되는 배열을 3개나 그것도 길이를 10000까지 만들기 때문이다.

하지만 zip을 사용해서 풀고싶어서 이렇게 해보았다.

제일 많이 맞춘사람만 뽑으면 되기에 max를 사용하였다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.