728x90
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42840
먼저, 문제를 읽어봤을 때, 수포자들이 찍는 방식에는 일정한 패턴이 있다.
그 패턴을 한 단위로 잘라 IntArray로 정렬해 둔다.
val userAnswers = arrayOf(
intArrayOf(1, 2, 3, 4, 5),
intArrayOf(2, 1, 2, 3, 2, 4, 2, 5),
intArrayOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5)
)
확인 대상은 3명이므로 정답 개수를 담을 3 size의 배열을 선언하고,
추가로 해당 테스트 문제의 답을 반환해 줄 mutableList를 선언했다.
val correctCnt = IntArray(3)
val res = mutableListOf<Int>()
수포자들의 패턴을 순회하면서 각 인덱스가 정답 리스트의 각 인덱스 내용과 동일한지를 판단하고,
만일 같을 경우 그 개수를 집계하여 correctCnt에 담는다.
userAnswers.forEachIndexed { i, arr ->
correctCnt[i] = answers.filterIndexed { j, answer -> answer == arr[j % arr.size] }.count()
}
마지막으로 correctCnt 배열을 순회하며 수포자가 맞힌 개수가 correctCnt의 최댓값과 같다면 결과 리스트에 해당 수포자를 추가한다.
correctCnt.forEachIndexed { index, i -> if (correctCnt.maxOrNull() == i) res.add(index + 1) }
return res.toIntArray()
728x90