Coding Problem

[프로그래머스] 영어 끝말잇기

Yepchani 2024. 11. 29. 21:23
반응형

문제

Summer/Winter Coding(~2018) - 영어 끝말잇기

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

 

 

예시 코드

function solution(n, words) {
  const spokenWords = new Set();
  let lastChar = words[0][0];

  for (let i = 0; i < words.length; i++) {
    const currentWord = words[i];
    const player = (i % n) + 1;
    const round = Math.floor(i / n) + 1;

    if (currentWord[0] !== lastChar || spokenWords.has(currentWord))
      return [player, round];

    spokenWords.add(currentWord);
    lastChar = currentWord.at(-1);
  }

  return [0, 0];
}

 

풀이

사람의 수 n과 사람들이 순서대로 말한 단어 words가 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는 지를 구하는 문제입니다.

 

이미 말한 단어는 다시 말할 수 없고, 마지막에 말한 단어의 글자로 시작해야 합니다.

 

중복 여부를 확인하기 위해 Set을 사용합니다.

 

현재 플레이어는 다음과 같이 구할 수 있습니다.

const player = (i % n) + 1;

 

현재 플레이어의 몇 번째 차례인지는 다음과 같이 구할 수 있습니다.

const round = Math.floor(i / n) + 1;