[Python]_로또 시뮬레이션 : 겹치는 번호 갯수 구하기

hanseungjune·2022년 6월 13일
0

Python

목록 보기
32/38

풀이

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
profile
필요하다면 공부하는 개발자, 한승준

0개의 댓글