JavaScript - 문제 미리보기

문제 559

hard
다음 중 Fisher-Yates 셔플 알고리즘의 핵심 아이디어는 무엇인가요? ```javascript for (let i = arr.length - 1; i > 0; i--) { let j = Math.floor(Math.random() * (i + 1)); // 요소 교환 [arr[i], arr[j]] = [arr[j], arr[i]]; } ```
A. 배열을 역순으로 정렬한다
B. 마지막 요소부터 임의의 앞 요소와 교환한다
C. 첫 요소부터 차례로 정렬한다
D. 모든 요소를 임의로 섞는다

정답: B

Fisher-Yates 알고리즘은 배열을 뒤에서부터 순회하면서 각 요소를 그보다 앞에 있는(자기 자신 포함) 임의의 요소와 교환합니다. 이 방법은 `Math.random()`을 사용한 단순한 셔플보다 훨씬 균등한 분포를 보장합니다.

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.