수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다.
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항
입출력 예
answers | return |
---|---|
[1,2,3,4,5] | [1] |
[1,3,2,4,2] | [1,2,3] |
여럿일 경우, 오름차순으로 정렬하라고 요구하지만 따로 sorted가 필요하지는 않다.
처음 결과값 세팅을 1번부터 n번 사람까지 미리 순서를 설정해두고 계산을 했기에, enumerated에서 filter로 걸러진 남은 element의 offset만 구하면 된다.
import Foundation
func solution(_ answers:[Int]) -> [Int] {
let first = [1, 2, 3, 4, 5]
let second = [2, 1, 2, 3, 2, 4, 2, 5]
let third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
var result = [0, 0, 0]
for i in 0..<answers.count {
if answers[i] == first[i%5] { //답안 5개 패턴
result[0] += 1
}
if answers[i] == second[i%8] { //답안 8개 패턴
result[1] += 1
}
if answers[i] == third[i%10] { //답안 10개 패턴
result[2] += 1
}
}
let max = result.max() //가장 큰 값 찾기
//가장 큰 값과 동일한 값의 Index만 남기기
return result.enumerated().filter { $0.element == max }.map { $0.offset + 1 }
}