[Algorithm] 영어 끝말잇기

MODAC·2023년 10월 11일
0

Algorihtm

목록 보기
8/12

문제 내용

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

문제 해결

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

  • 중복되는 단어가 있는 경우
  • 끝말과 시작말이 일치하지 않은 경우

문제 해결을 위해 조건을 하나씩 적용했다.

  1. 중복된 요소를 없애는 set 함수를 사용해 첫번째 탈락 조건을 확인한다.
  2. 끝말을 변수에 할당하고 조건이 일치하면 끝말을 교체하면서 두번째 탈락 조건을 확인한다.
  3. 탈락하지 않은 턴 수를 구하여 반환할 값을 계산한다.
  • 탈락자의 차례: (전체 턴 수 % 인원 수) + 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 자료구조를 적극 활용해야겠다.

0개의 댓글