https://school.programmers.co.kr/learn/courses/30/lessons/12981?language=javascript
- 끝말잇기에 참여하는 사람의 수 n은 2 이상 10 이하의 자연수입니다.
- words는 끝말잇기에 사용한 단어들이 순서대로 들어있는 배열이며, 길이는 n 이상 100 이하입니다.
- 단어의 길이는 2 이상 50 이하입니다.
- 모든 단어는 알파벳 소문자로만 이루어져 있습니다.
- 끝말잇기에 사용되는 단어의 뜻(의미)은 신경 쓰지 않으셔도 됩니다.
- 정답은 [ 번호, 차례 ] 형태로 return 해주세요.
- 만약 주어진 단어들로 탈락자가 생기지 않는다면, [0, 0]을 return 해주세요.
function solution(n, words) {
let result = [0, 0];
for(let i = 0; i < words.length; i++){
// 단어를 하나씩 빼낸다.
let word = words[i];
let person = i % n + 1;
let checkTurn = Math.ceil((i + 1) / n);
if(i > 0){
// 글자 마지막 단어를 알 수 있다.
let last = words[i - 1].split("").pop();
if(i > words.indexOf(word) || words[i][0] !== last){
result = [person, checkTurn];
break;
}
}
}
return result;
}
반환할 result = [0, 0]을 선언한다.
for문을 통해 words.length 까지 반복문을 돌리고, 몇 번 차례의 사람인지 구하기 위해 person을 위와 같이 선언 후 구한다.
checkTurn의 경우 Math.ceil을 통해 무조건 올림으로 해서 구하면 몇번째 turn 에서 걸렸는지 알 수 있다.
단어를 끝까지 가기 위해 if문 i > 0을 통해 진행하고 글자 마지막 단어를 알기 위해서 last = words[i - 1].split("").pop()을 사용한다. 이러면 글자 마지막 단어가 무엇인지 알 수 있다.
words.indexOf[word]를 통해 진행 현황을 파악할 수 있고, words[i][0] 끝말잇기에서 last 단어와 비교해 같지 않다면 얘가 틀린거다.
break는 전부 통과했을 때를 대비해 break를 사용했고, return result를 하면 문제가 원하는 값을 출력할 수 있다.