더북(TheBook)

리스트 데이터를 섞었으니 이번에는 추첨해 봅시다. 조건 2, 4에 따라 20명 중에 치킨 당첨자 1명, 커피 당첨자 3명이고 중복이 없어야 합니다. 여러분은 어떻게 접근했나요? 여기서는 sample() 함수를 사용해 처음부터 4명을 뽑은 다음, 그중 1명은 치킨, 나머지 3명은 커피 당첨자로 뽑습니다.

winners = sample(users, 4) # users 리스트에서 중복 없이 4명 추첨

이제 winners에서 첫 번째 아이디는 치킨, 나머지는 커피 당첨자로 출력하면 됩니다. 이 동작은 슬라이싱을 사용하면 쉽게 해결할 수 있습니다.

print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0}".format(winners[0])) # 0번째 인덱스(1명)
print("커피 당첨자 : {0}".format(winners[1:])) # 1번째부터 마지막까지 슬라이싱(3명)
print("-- 축하합니다 --")

여러분이 생각한 방식은 어떤 건가요? 아마 대부분 다음처럼 접근했을 겁니다.

“20명 중에서 1명을 먼저 뽑고, 뽑은 사람을 제외한 19명 중에서 3명을 뽑자. 그런데 뽑은 사람은 어떻게 제외하지?”

좋은 접근 방식입니다. 그러면 이 방식으로도 풀어 볼까요?

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.