코딩테스트/프로그래머스
프로그래머스 영어 끝말잇기
의현
2025. 4. 2. 17:26
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12981#
문제 풀이
set 자료구조와 Array.prototype.slice 메서드를 이용하여 문제를 해결
끝말잇기에 사용한 문자를 usedWords(set)로 관리하고 특정 단어의 포함관계를 .has()를 사용하여 판단
이전 문자의 마지막 값을 가져올려면 문자열.slice(-1)을 하면 마지막 값을 얻을 수 있음
function solution(n, words) {
let usedWords = new Set([words[0]]);
let round = 1;
for (let i = 1; i < words.length; i++) {
const isNewRound = i % n === 0;
if (isNewRound) round++;
const currentPlayer = (i % n) + 1;
const previousWord = words[i - 1];
const currentWord = words[i];
if (
usedWords.has(currentWord) ||
previousWord.slice(-1) !== currentWord[0]
) {
return [currentPlayer, round];
}
usedWords.add(currentWord);
}
return [0, 0];
}
결론
set 자료구조
- .has() : set에 특정 값이 존재하는지 확인
- .add() : set에 새로운 값 추가(중복 x)
slice(-1) : slice의 인수가 음수일 경우 배열의 마지막을 기준으로 검색하여 새로운 배열을 리턴
- 'abc'.slice(-1) : abc의 뒤에서 1개를 검색하여 리턴, 즉 'c'값이 리턴됨