213. 모의고사

Harold's velog·2024년 3월 12일

CodingTest (Class)

목록 보기
49/52


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를 사용하였다.

profile
데일리 정리, 하루에 최소 하나의 글은 적도록 하자.

0개의 댓글