친구들과 매년 크리스마스 마니또를 하는데, 종이를 찢어 뽑기를 몇 년째....드디어 개발을 해보았다. 처음 마니또 뽑기를 만들 때,단순하게, 리스트에서 본인을 제외 한 다른 사람 뽑기를 상상하고 코딩을 했는데아니나 다를까. 랜덤 뽑기다 보니 undefined 가 나와 버렸다. 찾아보니 sattoloCycle 이라는 알고리즘이 있다. sattoloCycle 은 모든 항목이 한 번씩만 등장하고, 자기 자신과 짝이 안 되도록 섞는 알고리즘.이걸 쓰면 마니또처럼 “서로 다른 사람을 1:1로 매칭해야 하는 경우”에 완벽하게 들어맞는다.function sattoloCycle(arr: T[]): T[] { const a = arr.slice(); // 원본 배열 복사 for (let i = a.length - ..