[Algorithm] 영어 끝말잇기
공부

[Algorithm] 영어 끝말잇기

작성일: 2023년 10월 11일0

문제 내용

영어 끝말잇기는 주어진 인원 수만큼 끝말잇기를 수행했을 때 탈락자를 찾아 [탈락자의 차례, 탈락자의 턴 횟수]를 반환해야 한다.

문제 해결

탈락의 조건은 다음과 같다.

  • 중복되는 단어가 있는 경우
  • 끝말과 시작말이 일치하지 않은 경우
  • 문제 해결을 위해 조건을 하나씩 적용했다.

  • 중복된 요소를 없애는 set 함수를 사용해 첫번째 탈락 조건을 확인한다.
  • 끝말을 변수에 할당하고 조건이 일치하면 끝말을 교체하면서 두번째 탈락 조건을 확인한다.
  • 탈락하지 않은 턴 수를 구하여 반환할 값을 계산한다.
  • 탈락자의 차례: (전체 턴 수 % 인원 수) + 1
  • 탈락자의 턴 수: (전체 턴 수 / 인원 수) + 1
  • function solution(n, words) {
      const check = new Set();
      let turn = 0,
      next = words[0][0];
    
      for (let i = 0; i < words.length; i++) {
        const word = words[i];
        if (check.has(word) || next !== word[0]) return [(turn % n) + 1, (~~(turn / n)) + 1];
        turn++;
        next = word[word.length - 1];
        check.add(word);
      }
        
      return [0,0]
    }

    (1) 순서가 정해지지 않고 (2) 중복되지 않는 요소를 확인할 땐 Set 자료구조를 적극 활용해야겠다.