영어 끝말잇기
문제 설명
1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.
- 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.
- 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.
- 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.
- 이전에 등장했던 단어는 사용할 수 없습니다.
- 한 글자인 단어는 인정되지 않습니다.
- 사람수 와 끝말잇기 나온 단어들이 배열로 주어짐
- 틀린사람있으면 그사람이 몇번째 사람인지 , 몇번째 차례에 틀렸는지 출력 ( 중복 or 끝말잇기실패)
- 잘 끝났으면 0,0 출력
index % n +1 이 걸린사람
index / n +1 이 차례 번호
해당 사실을 조금 고민하니까 알 수 있었다.
처음엔 중복되었을 때 처리를 못해줘서 고군분투하다가 풀이를 참고하여 다음과 같은 답변을 낼 수 있었다.
let current = words[i]; //현재 단어
if(words.indexOf(current) !== i ){
return [i%n +1 , Math.floor(i/n)+1];
}
indexOf를 사용하여 지금 인덱스가 출력되지않는다면 이전에 다른 사람이 이미 말했던 것이므로 바로 답을 출력해주었다.
function solution(n, words) {
var answer = [0,0];
for(let i = 1 ; i<words.length; i++){
let current = words[i]; //현재 단어
if(words.indexOf(current) !== i ){
return [i%n +1 , Math.floor(i/n)+1];
}
let beforeLetter = words[i-1].slice(-1);
let currentLetter = words[i].charAt(0);
if(beforeLetter !== currentLetter){
return [i%n +1 , Math.floor(i/n)+1];
}
}
return answer;
}