from IPython.core.display import display, HTML
display(HTML("<style>.container { width:1200px !important; }</style>"))
로또는 주 1회씩 열립니다. 하지만 한 사람이 한 회차에 여러 번 참여할 수도 있습니다.
번호는 1부터 45까지 있는데요. 주최측에서는 매주 6개의 '일반 당첨 번호'와 1개의 '보너스 번호'를 뽑습니다. 그리고 참가자는 1번 참여할 때마다 서로 다른 번호 6개를 선택합니다.
당첨 액수는 아래 규칙에 따라 결정됩니다.
- 내가 뽑은 번호 6개와 일반 당첨 번호 6개 모두 일치 (10억 원)
- 내가 뽑은 번호 5개와 일반 당첨 번호 5개 일치, 그리고 내 번호 1개와 보너스 번호 일치 (5천만 원)
- 내가 뽑은 번호 5개와 일반 당첨 번호 5개 일치 (100만 원)
- 내가 뽑은 번호 4개와 일반 당첨 번호 4개 일치 (5만 원)
- 내가 뽑은 번호 3개와 일반 당첨 번호 3개 일치 (5천 원)
generate_numbers
- 이 함수는 파라미터로 정수 n을 받습니다. 무작위로 1과 45 사이의 서로 다른 번호 n개를 뽑고, 그 번호들이 담긴 리스트를 리턴합니다.
참고로 이 함수는 참가자의 번호를 뽑는 데에도 쓰이고, 보너스를 포함한 당첨 번호 7개를 뽑는 데에도 쓰입니다.
# from random import randint
import random
def generate_numbers(n):
num_list = []
for i in range(n):
while True:
num = random.randint(1,45)
if num not in num_list:
break
num_list.append(num)
return num_list
print(generate_numbers(3))
num_list: [27]
num_list: [27, 39]
num_list: [27, 39, 24]
[27, 39, 24]
모범 답안¶
from random import randint
def generate_numbers(n):
numbers = []
while len(numbers) < n:
num = randint(1, 45)
if num not in numbers:
numbers.append(num)
return numbers
다음¶
draw_winning_numbers
일반 당첨 번호 6개와 보너스 번호 1개가 포함된 리스트를 리턴합니다. 일반 당첨 번호 6개는 정렬되어 있어야 하고, 보너스 번호는 마지막에 추가하면 됩니다.
예를 들어서 아래 코드를 실행하면,
print(draw_winning_numbers()) 이런 결과가 나올 수 있습니다.
[4, 12, 14, 28, 40, 41, 6]
from random import randint
def generate_numbers(n):
num_list = []
for i in range(n):
while True:
num = randint(1,45)
if num not in num_list:
break
num_list.append(num)
return num_list
def draw_winning_numbers():
num_list = generate_numbers(6)
new_num_list = sorted(num_list)
while True:
num = randint(1,45)
if num not in num_list:
new_num_list.append(num)
break
return new_num_list
print(draw_winning_numbers())
[5, 14, 19, 26, 38, 39]
[5, 14, 19, 26, 38, 39, 25]
모범 답안
from random import randint
def generate_numbers(n): numbers = []
while len(numbers) < n:
new_number = randint(1, 45)
if new_number not in numbers:
numbers.append(new_number)
return numbers
def draw_winning_numbers():
winning_numbers = generate_numbers(7)
return sorted(winning_numbers[:6]) + winning_numbers[6:]
다음¶
count_matching_numbers
- 파라미터로 리스트 list_1과 리스트 list_2를 받고, 두 리스트 사이에 겹치는 번호 개수를 리턴합니다.
print(count_matching_numbers([2, 7, 11, 14, 25, 40], [2, 11, 13, 14, 30, 35]))
2, 11, 13이 겹치기 때문에 이렇게 나옵니다.
3
def count_matching_numbers(numbers, winning_numbers):
com1 = sorted(numbers)
com2 = sorted(winning_numbers)
cnt = 0
for i in com1:
for j in com2:
if i == j:
cnt +=1
break
return cnt
# 테스트
print(count_matching_numbers([2, 7, 11, 14, 25, 40], [2, 11, 13, 14, 30, 35]))
print(count_matching_numbers([2, 7, 11, 14, 25, 40], [14]))
3
1
다음¶
check
- 참가자의 당첨 금액을 리턴합니다. 파라미터로 참가자가 뽑은 번호가 담긴 리스트 numbers와 주최측에서 뽑은 번호가 담긴 리스트 winning_numbers를 받는데요. numbers는 당연히 번호 여섯 개를 담고 있고, winning_numbers는 보너스까지 해서 번호 7개를 담고 있겠죠?
numbers_test = [2, 4, 11, 14, 25, 40] winning_numbers_test = [4, 12, 14, 28, 40, 41, 6]
print(check(numbers_list, winning_numbers_test)) 4, 14, 40... 이렇게 번호 3개가 겹치기 때문에 5천 원에 당첨됩니다.
5000
당첨 액수는 아래 규칙에 따라 결정됩니다.
- 내가 뽑은 번호 6개와 일반 당첨 번호 6개 모두 일치 (10억 원)
- 내가 뽑은 번호 5개와 일반 당첨 번호 5개 일치, 그리고 내 번호 1개와 보너스 번호 일치 (5천만 원)
- 내가 뽑은 번호 5개와 일반 당첨 번호 5개 일치 (100만 원)
- 내가 뽑은 번호 4개와 일반 당첨 번호 4개 일치 (5만 원)
- 내가 뽑은 번호 3개와 일반 당첨 번호 3개 일치 (5천 원)
# 참가자가 뽑은 번호가 담긴 리스트 numbers
# 주최측에서 뽑은 번호가 담긴 리스트 winning_numbers를 받는데요.
def count_matching_numbers(numbers, winning_numbers):
com1 = sorted(numbers)
com2 = winning_numbers[:6]
cnt = 0
for i in com1:
for j in com2:
if i == j:
cnt +=1
break
return cnt
def check(numbers, winning_numbers):
win_num = count_matching_numbers(numbers, winning_numbers)
prize= 0
if win_num == 6:
prize = 1000000000
elif win_num == 5:
if winning_numbers[-1] in numbers:
prize = 50000000
else:
prize = 1000000
elif win_num == 4:
prize = 50000
elif win_num == 3:
prize = 5000
else:
prize
return prize
# 테스트
print(check([2, 4, 11, 14, 25, 40], [4, 12, 14, 28, 40, 41, 6]))
print(check([2, 4, 11, 14, 25, 40], [2, 4, 10, 11, 14, 40, 25]))
5000
50000000
내 답안
from random import randint
def generate_numbers(n):
num_list = []
for i in range(n):
while True:
num = randint(1,45)
if num not in num_list:
break
num_list.append(num)
return num_list
def draw_winning_numbers():
num_list = generate_numbers(6)
new_num_list = sorted(num_list)
while True:
num = randint(1,45)
if num not in num_list:
new_num_list.append(num)
break
return new_num_list
def count_matching_numbers(numbers, winning_numbers):
com1 = sorted(numbers)
com2 = winning_numbers[:6]
cnt = 0
for i in com1:
for j in com2:
if i == j:
cnt +=1
break
return cnt
def check(numbers, winning_numbers):
win_num = count_matching_numbers(numbers, winning_numbers)
prize= 0
if win_num == 6:
prize = 1000000000
elif win_num == 5:
if winning_numbers[-1] in numbers:
prize = 50000000
else:
prize = 1000000
elif win_num == 4:
prize = 50000
elif win_num == 3:
prize = 5000
else:
prize
return prize
모범 답안
from random import randint
def generate_numbers(n):
numbers = []
while len(numbers) < n:
new_number = randint(1, 45)
if new_number not in numbers:
numbers.append(new_number)
return numbers
def draw_winning_numbers():
winning_numbers = generate_numbers(7)
return sorted(winning_numbers[:6]) + winning_numbers[6:]
def count_matching_numbers(numbers, winning_numbers):
count = 0
for num in numbers:
if num in winning_numbers:
count = count + 1
return count
def check(numbers, winning_numbers):
count = count_matching_numbers(numbers, winning_numbers[:6])
bonus_count = count_matching_numbers(numbers, winning_numbers[6:])
if count == 6:
return 1000000000
elif count == 5 and bonus_count == 1:
return 50000000
elif count == 5:
return 1000000
elif count == 4:
return 50000
elif count == 3:
return 5000
else:
return
'코드잇' 카테고리의 다른 글
[코드잇 & 머신러닝] 넘파이 (0) | 2021.02.02 |
---|---|
[코드잇] 숫자 야구 (0) | 2021.02.01 |
[코드잇] 단어장 만들기>단어 퀴즈>고급 단어장 (1) | 2021.01.30 |
[코드잇] 코딩에 빠진 닭 (0) | 2021.01.27 |
[코드잇] 숫자 맞히기 게임 (0) | 2021.01.27 |