파이썬 코딩테스트 강좌, 디버깅 활용 사례 살펴보기

문제 설명

오늘 다룰 문제는 “짝수와 홀수의 합”입니다. 이 문제는 주어진 리스트 내의 숫자에서 짝수와 홀수를 구분하여 각각의 합을 구하도록 요구합니다.
이 문제는 파이썬의 기본적인 제어문과 리스트 처리 기법을 활용할 수 있는 좋은 예제입니다.

문제: 짝수와 홀수의 합

주어진 정수 리스트가 주어졌을 때, 리스트 내의 짝수의 합과 홀수의 합을 구하여 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 공백으로 구분된 정수들이 주어지며, 정수는 (-106 ≤ 정수 ≤ 106)입니다.

출력

첫째 줄에 짝수의 합과 홀수의 합을 공백으로 구분하여 출력합니다.

예제 입력

    1 2 3 4 5 6 7 8 9 10
    

예제 출력

    30 25
    

문제 풀이 과정

1단계: 문제 이해하기

문제를 접했을 때 우선적으로 해야 할 일은 문제의 요구사항을 명확히 이해하는 것입니다.
짝수와 홀수를 판별할 수 있으며, 이들을 합산할 필요가 있습니다. 이 단계에서 인풋과 아웃풋의 형태를 주의 깊게 살펴보는 것이 중요합니다.

2단계: 계획 세우기

문제를 해결하기 위해서는 다음과 같은 과정을 거칩니다:

  1. 리스트의 각 숫자를 반복합니다.
  2. 현재 숫자가 짝수인지 홀수인지 판별합니다.
  3. 짝수일 경우 짝수의 합 변수에 더하고, 홀수일 경우 홀수의 합 변수에 더합니다.
  4. 최종적으로 짝수와 홀수의 합을 출력합니다.

3단계: 코딩

이제 위의 계획을 바탕으로 실제 코드를 작성해 보겠습니다. 코드 작성 시, 프로젝트에 사용될 변수 및 기본적인 구조를 설정합니다.

    def sum_even_odd(numbers):
        even_sum = 0
        odd_sum = 0
        
        for num in numbers:
            if num % 2 == 0:
                even_sum += num
            else:
                odd_sum += num
                
        return even_sum, odd_sum
            
    # 입력 부분
    input_numbers = list(map(int, input().split()))
    
    # 함수 호출
    even_sum, odd_sum = sum_even_odd(input_numbers)
    
    # 결과 출력
    print(even_sum, odd_sum)
    

4단계: 디버깅

다 작성한 후에는 코드의 정확성을 검증해야 합니다.
예를 들어, 다양한 입력 값으로 코드를 실행해보고 결과가 예상과 일치하는지 확인합니다.
또한, 데이터의 범위를 초과하거나 예외 상황에 대한 처리가 이루어지는지 점검하는 것도 중요합니다.

에러 발생 예시

    input_numbers = list(map(int, input().split()))
    # 위의 코드에서 만약 문자열이 입력될 경우 ValueError가 발생할 수 있습니다.
    

이를 방지하기 위해 try-except 블록을 사용할 수 있습니다:

    try:
        input_numbers = list(map(int, input().split()))
    except ValueError:
        print("잘못된 입력입니다. 정수만 입력하세요.")
    

5단계: 최적화

코드를 최적화할 수도 있습니다. 리스트 컴프리헨션을 사용하여 코드를 간결하게 만들 수 있습니다. 예를 들어:

    even_sum = sum(num for num in input_numbers if num % 2 == 0)
    odd_sum = sum(num for num in input_numbers if num % 2 != 0)
    

결론

이와 같은 문제를 통해 짝수와 홀수를 쉽게 확인하고 합산하는 과정을 배우게 되었습니다.
또한, 코드를 직접 작성하고 디버깅하는 과정을 통해 문제 해결 능력을 키울 수 있었습니다.
최종적으로 효율적이고 간결한 코드를 작성하는 것이 무엇보다 중요하다는 것을 다시 한번 강조하고 싶습니다.
여러분도 다양한 문제를 통해 디버깅 능력을 기르고, 더 나아가 알고리즘 문제 해결 능력을 향상시킬 수 있습니다.

연습문제

위 문제와 유사한 형태로 다음의 문제를 풀어보세요. 입력받은 리스트에서 소수의 합과 소수가 아닌 수의 합을 구하세요.

소수 판단 함수 구현

    def is_prime(n):
        if n <= 1:
            return False
        for i in range(2, int(n**0.5) + 1):
            if n % i == 0:
                return False
        return True
    

최종 함수를 작성해보세요