소개
Python 에서 리스트는 항목들의 정렬된 컬렉션입니다. 때때로, 리스트 내 항목들의 순서를 무작위로 섞고 싶을 수 있습니다. 이는 게임, 시뮬레이션 또는 무작위성을 도입하려는 다른 상황에서 유용할 수 있습니다. 이 챌린지에서는 리스트 내 항목들을 섞는 함수를 작성합니다.
Python 에서 리스트는 항목들의 정렬된 컬렉션입니다. 때때로, 리스트 내 항목들의 순서를 무작위로 섞고 싶을 수 있습니다. 이는 게임, 시뮬레이션 또는 무작위성을 도입하려는 다른 상황에서 유용할 수 있습니다. 이 챌린지에서는 리스트 내 항목들을 섞는 함수를 작성합니다.
입력으로 리스트를 받아 무작위 순서로 동일한 항목들을 포함하는 새로운 리스트를 반환하는 함수 shuffle(lst)를 작성하십시오. 함수는 리스트 내 항목들을 섞기 위해 Fisher-Yates 알고리즘을 사용해야 합니다.
Fisher-Yates 알고리즘은 다음과 같이 작동합니다.
함수는 원래 리스트를 수정해서는 안 됩니다. 대신, 섞인 항목들을 포함하는 새로운 리스트를 생성해야 합니다.
입력 리스트에는 최소한 하나의 항목이 포함되어 있다고 가정할 수 있습니다.
from copy import deepcopy
from random import randint
def shuffle(lst):
temp_lst = deepcopy(lst)
m = len(temp_lst)
while (m):
m -= 1
i = randint(0, m)
temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
return temp_lst
foo = [1, 2, 3]
shuffle(foo) ## [2, 3, 1], foo = [1, 2, 3]
이 챌린지에서는 Fisher-Yates 알고리즘을 사용하여 리스트 내 항목들을 섞는 함수를 작성했습니다. 이 알고리즘은 리스트 내 항목들의 순서를 무작위로 만드는 간단하고 효율적인 방법입니다. 이 챌린지를 완료함으로써 Python 에서 리스트가 어떻게 작동하는지, 그리고 함수를 사용하여 리스트를 어떻게 조작하는지에 대한 더 깊은 이해를 얻었습니다.