https://programmers.co.kr/learn/courses/30/lessons/12981
n명의 사람이 순서대로 영어 끝말잇기를 진행한 과정이 words배열에 담겨 전달된다.
가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는 지를 반환해야 하는 문제
끝말잇기 탈락자가 발생하는 경우는 크게 두 가지이다.
function solution(n, words) {
let crrWord = words[0];
let lastCharOfPrevWord = crrWord[crrWord.length - 1];
let duplicatedIdx;
function checkDuplication (word) {
const firstIdx = words.indexOf(word);
duplicatedIdx = words.indexOf(word, firstIdx + 1);
if (duplicatedIdx === -1) return false;
return duplicatedIdx;
}
function findLoser (idx) {
const turn = (idx + 1) % n;
let iterations = parseInt((idx + 1) / n);
if (turn) iterations += 1;
return [turn? turn:n, iterations];
}
for (let i = 1; i < words.length; i++) {
crrWord = words[i];
if (lastCharOfPrevWord !== crrWord[0]) {
return findLoser(i);
};
if (checkDuplication(crrWord)) {
return findLoser(duplicatedIdx);
};
lastCharOfPrevWord = crrWord[crrWord.length - 1];
};
return [0,0];
}