def count_matching_numbers(list_1, list_2):
# 코드를 작성하세요.
count = 0
for number_1 in list_1:
for number_2 in list_2:
if number_1 == number_2:
count += 1
return count
# 테스트
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]))
일단 2시간의 환기(?)를 하고 나니 머리가 좀 돌아간거 같다! 일단 맞추긴 했고, 나는 for문을 이용해서 list_1의 요소를 기준으로 list_2의 요소들을 하나씩 비교하면서 같은 숫자가 있다면 count를 1씩 증가시키는 것으로 return 하였다.
def count_matching_numbers(numbers, winning_numbers):
count = 0
for num in numbers:
if num in winning_numbers:
count = count + 1
return count
확실히 모범 답안 코드가 훨씬 깔끔하다고 느꼈다. 나는 for문을 2번 쓴 것과 달리 모범답안에서는 for문을 한 번 썼다. 이것은 일단 한 번의 반복으로 요소를 하나씩 꺼내면서, 해당 요소가 winning_numbers에 있는지 확인정도만 해도 답이 나온다는 코드이다. in
만 단독으로 쓰면 true or false가 나오기 때문이다. 아무튼 더 효율적이 코드가 있어서 꼭 기억해두어야 겠다.
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