1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.
다음은 3명이 끝말잇기를 하는 상황을 나타냅니다.
tank → kick → know → wheel → land → dream → mother → robot → tank
위 끝말잇기는 다음과 같이 진행됩니다.
끝말잇기를 계속 진행해 나가다 보면, 3번 사람이 자신의 세 번째 차례에 말한 tank 라는 단어는 이전에 등장했던 단어이므로 탈락하게 됩니다.
사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요.
아래와 같은 방법으로 풀 수 있습니다.
function solution(n, words) {
let answer = [0, 0];
let useWords = [];
useWords.push(words[0]);
for (let i = 1; i < words.length; i++) {
const prevWord = words[i - 1];
const curWord = words[i];
if (useWords.indexOf(words[i]) === -1 && prevWord[prevWord.length - 1] === curWord[0]) {
useWords.push(curWord);
} else {
answer[0] = i % n + 1;
answer[1] = Math.trunc(i / n) + 1;
return answer
}
}
return answer;
}
Set 을 이용해서 푸는 방법
function solution(n, words) {
let answer = [0, 0];
let set = new Set();
set.add(words[0]);
for (let i = 1; i < words.length; i++) {
const prevWord = words[i - 1];
const curWord = words[i];
if (!set.has(curWord) && prevWord[prevWord.length - 1] === curWord[0]) {
set.add(curWord);
} else {
answer[0] = i % n + 1;
answer[1] = Math.trunc(i / n) + 1;
return answer
}
}
return answer;
}
정보 공유 해주셔서 감사합니다~!