구현 문제입니다. 배열의 크기가 최대 100이므로 시간복잡도 걱정 없이 완전 탐색을 해도 관계 없습니다. 아래 3가지 케이스에 대해서 분기문으로 구현하면 됩니다.
그리고 모든 단어를 순회해도 1, 2번 케이스가 걸리지 않으면 [0, 0]을 반환합니다.
마지막으로 틀린 사람은 n으로 나머지로, 틀린 순서는 n으로 나눈 몫으로 계산하면 됩니다.
func solution(_ n:Int, _ words:[String]) -> [Int] {
var set = Set<String>()
for i in 0..<words.count {
// 1. 앞에서 나온 단어 말한 경우
if set.contains(words[i]) {
return [i % n + 1, i / n + 1]
// 2. 앞에 말한 단어의 마지막 글자와 나중에 말한 단어의 첫 글자가 다른 경우
} else if i > 0 && words[i - 1].last! != words[i].first! {
return [i % n + 1, i / n + 1]
// 3. 1, 2의 경우가 아닌 경우
} else {
set.insert(words[i])
}
}
// 모든 단어를 순회한 경우
return [0, 0]
}