function solution(n, words) {
let arr = [];
for (let i = 0; i < n; i++) {
let temp = [];
arr.push(temp);
}
let idx = 0;
words.map((a) => {
if (idx >= n) idx = 0;
if (arr[idx]) arr[idx].push(a);
idx++;
});
let x = words[0];
let game_stage = 0;
let people = 0;
let temp = [];
let ans = [];
for (let i = 0; i < words.length; i++) {
if (people === n) {
people = 0;
game_stage++;
}
let str = arr[people][game_stage];
let last = temp[temp.length - 1];
if (last !== undefined) {
if (last.slice(last.length - 1) !== str.slice(0, 1)) {
ans = [people + 1, game_stage + 1];
break;
}
if (str.length === 1) {
ans = [people + 1, game_stage + 1];
break;
} else if (str === x) {
ans = [people + 1, game_stage + 1];
break;
}
}
temp.push(str);
people++;
}
if (ans.length === 0) {
return [0, 0];
} else {
return ans;
}
}
function solution(n, words) {
var answer = [0, 0];
// 이미 사용한 단어를 넣을 배열
var usedWords = []
// 1번 플레이어부터 시작
usedWords.push(words[0])
for (let i = 1; i < words.length; i++) {
var beforeWord = words[i-1]
var currentWord = words[i]
// 이전단어의 맨 뒷글자와 현재단어의 맨 앞글자가 같고
// 이전에 사용한적이 없는 단어라면
if (beforeWord[beforeWord.length - 1] == currentWord[0]
&& usedWords.indexOf(currentWord) == -1) {
// 계속 게임을 진행
usedWords.push(currentWord)
} else {
// 그게 아니라면 몇번째 턴인지, 몇번째 플레이어 인지 계산해서 리턴해준다.
var turn = parseInt(i / n) + 1
var player = i % n + 1
return answer = [player, turn]
}
}
return answer;
}
일단 무작정 풀이는 해결 하엿다.
위쪽의 코드가 나의 코드이고 아래쪽의 코드가 구글링을 참고한 코드이다.
생각한 코드는 같지만 나 같은 경우에는 좀더 직관적인 것을 좋아하다보니 변수를 많이 선언해 버렷다;; ㅠㅠ
그런점에서 차이가 있고 나머지 부분은 비슷하지만
indexOf를 사용함에 따라서 오답인지 정답인지가 갈라지는 것같다.