[프로그래머스] 영어 끝말잇기
// https://school.programmers.co.kr/learn/courses/30/lessons/12981
function solution(n, words) {
    let answer;
    let playerNumber = 1;
    let turn = 1;
    const pastWords = [];
    
    for(let i = 0; i <words.length; i++){
        
              
        if(
            // 한글자인지 아닌지 확인합니다. 
            checkOneWord(words[i]) ||
            // 중복 확인        
            checkSameWord(pastWords,words[i]) ||
            // 앞뒤 비교를 해야하니 첫번째가 아닐때만 앞 단어의 마지막 글자와 뒷 단어의 첫 글자가 다르면
            (i && checkLastWord(words[i-1],words[i]))
        ){
            answer = [playerNumber,turn]
            break;
        }
        
        
        // 플레이어 순서 확인 및 차례 관리
        if(playerNumber < n){
            playerNumber ++
        } else {
            playerNumber = 1
            turn ++
        }
        
        // 중복 확인을 위한 사용한 단어 배열 생성
        pastWords.push(words[i])
        
    }
    
    return answer || [0,0];
}

const checkLastWord = (pastWord,currentWord) => {
    return pastWord.substr(-1) === currentWord.substr(0,1) ? false : true
}

const checkOneWord = (string) => {
    return string.length === 1 ? true : false
}

const checkSameWord = (pastWords,word) => {
    return pastWords.includes(word);
}

'코딩테스트' 카테고리의 다른 글

[프로그래머스] 타겟넘버  (0) 2022.09.02
[프로그래머스] H-Index  (0) 2022.08.26
[프로그래머스] 기능개발  (0) 2022.08.25
[프로그래머스] 체육복  (0) 2022.08.23
[프로그래머스] 크레인 인형뽑기 게임  (0) 2022.08.21