연습장/백준(BOJ) 문제풀이

[프로그래머스 Level 2] 영어 끝말잇기 - JavaScript

Tesseractjh 2022. 11. 19. 16:08

🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

✏️ 풀이

function solution(n, words) {
    const dict = { [words[0]]: true };
    
    for (let i = 1; i < words.length; i++) {
        const curWord = words[i];
        const prevWord = words[i - 1];
        if (dict[curWord] || (curWord[0] !== prevWord[prevWord.length - 1])) {
            return [i % n + 1, Math.floor(i / n) + 1];
        }
        dict[curWord] = true;
    }
    
    return [0, 0];
}

words를 순회하면서 처음 나온 단어면 dict에 저장한다. 이미 dict에 등록된 단어거나, 또는 앞 단어 마지막 글자와 현재 단어의 첫 글자가 같지 않으면 words의 index를 n으로 나눈 몫과 나머지를 이용해서 현재 몇 번째 사람이 몇 번째 차례에 탈락하는지를 구하여 반환하였다.

 

prevWord가 words[i - 1]이므로, i를 1부터 시작해서 순회하고 대신 dict에 words[0]을 미리 넣어주었다.