앞으로 알고리즘 문제에 대해서 문제 - 코드 - 풀이 순으로 포스팅을 할 예정이다.
문제
코드
function solution(n, words) {
const voca = [];
let now = words[0];
let cnt = 1,
order = 1;
voca.push(now);
words = words.slice(1);
for (let next of words) {
if (++order > n) {
order = 1;
cnt++;
}
if (now[now.length - 1] !== next[0] || voca.includes(next))
return [order, cnt];
voca.push(next);
now = next;
}
return [0, 0];
}
풀이
끝말잇기 게임에서 가장 먼저 탈락하는 사람의 번호와 그 사람이 몇번째 차례에서 탈락했는지를 구하는 문제이다.
변수
voca : 언급한 단어를 담은 배열
now : 현재 단어
cnt : 몇번째 차례인지를 구하는 변수
order : 단어를 말하는 사람의 번호
next : 다음 단어
words 변수의 단어를 하나씩 조회한다.
1번 ~ n번 사람까지의 순서가 끝나면 1번 사람으로 바꾸면서 차례를 하나 더해준다.
voca배열에 현재 언급된 단어를 넣어준다.
다음 단어가 끝말잇기 규칙에 어긋나거나 voca 배열에 이미 존재하면, 그 사람은 탈락하고 번호와 차례를 출력한다.
만약 words 단어들을 모두 조회할 때 까지 게임이 끝나지 않았다면 [0,0]을 리턴한다.
'DS & Algorithm > programmers' 카테고리의 다른 글
[프로그래머스] 괄호 회전하기 - 자바스크립트 (0) | 2021.06.27 |
---|---|
[프로그래머스] 압축 - 자바스크립트 (0) | 2021.06.27 |
[프로그래머스] 파일명 정렬 - 자바스크립트 (0) | 2021.06.24 |
[프로그래머스] 피보나치 수 - 자바스크립트 (0) | 2021.06.19 |
[프로그래머스] 튜플 - 자바스크립트 (0) | 2021.06.19 |