$form.addEventListener('submit', (event) => {
(중략)
const candidate = Array(45).fill().map((v, i) => i + 1);
const shuffle = [];
while (candidate.length > 0) {
const random = Math.floor(Math.random() * candidate.length); // 무작위 인덱스 뽑기
const spliceArray = candidate.splice(random, 1); // 뽑은 값을 새로운 배열에 넣기
const value = spliceArray[0]; // 새로운 배열에 들어 있는 값 꺼내기
shuffle.push(value); // 꺼낸 값을 shuffle 배열에 넣기
}
console.log(shuffle);
});
여기서 작성한 코드를 피셔-예이츠 셔플 알고리즘(Fisher-Yates Shuffle algorithm)이라고 합니다. 평소에 알고리즘이라는 단어를 많이 들어 봤을 겁니다. 이 단어를 들으면 복잡한 코드를 떠올리지만, 지금까지 작성한 코드도 모두 알고리즘입니다. 그저 코딩테스트 문제로 어려운 알고리즘을 내서 알고리즘은 어렵다는 편견이 있을 뿐입니다.