수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
| answers | return |
|---|---|
| [1,2,3,4,5] | [1] |
| [1,3,2,4,2] | [1,2,3] |
import Foundation
func solution(_ answers:[Int]) -> [Int] {
var result: Array<Int> = [] // 정답을 출력할 변수
let firstStudent: Array<Int> = [1, 2, 3, 4, 5] // 첫번째 학생이 찍는 정답
let secondStudent: Array<Int> = [2, 1, 2, 3, 2, 4, 2, 5] // 두번째 학생이 찍는 정답
let thirdStudent: Array<Int> = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] // 세번째 학생이 찍는 정답
var firstCount: Int = 0; // 첫번째 학생의 정답 수
var secondCount: Int = 0; // 두번째 학생의 정답 수
var thirdCount: Int = 0; // 세번째 학생의 정답 수
for i in 0..<answers.count {
if answers[i] == firstStudent[i % firstStudent.count] {
firstCount += 1
}
if answers[i] == secondStudent[i % secondStudent.count] {
secondCount += 1
}
if answers[i] == thirdStudent[i % thirdStudent.count] {
thirdCount += 1
}
}
var maxOne = max(firstCount, secondCount, thirdCount) // 세 학생의 최대점수
if maxOne == firstCount {
result.append(1)
}
if maxOne == secondCount {
result.append(2)
}
if maxOne == thirdCount {
result.append(3)
}
return result
}