Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 n개 숫자의 곱이 짝수인지 홀수인지 확인하는 방법

문제 개요

숫자 배열 nums가 주어졌을 때, 이 숫자들을 모두 곱한 결과가 짝수인지 홀수인지 판별해야 합니다.

예를 들어 입력이 nums = [5,7,4,2,6]이라면 곱은 5 × 7 × 4 × 2 × 6 = 1680이고, 1680은 짝수이므로 출력은 "Even"이 됩니다.

접근 방법

곱셈의 성질을 활용하면 실제로 모든 수를 일일이 곱하지 않고도 결과를 빠르게 판별할 수 있습니다.

  • 배열에 짝수가 하나라도 포함되어 있으면 전체 곱은 반드시 짝수입니다.
  • 모든 수가 홀수일 때만 전체 곱이 홀수가 됩니다.

따라서 다음과 같은 단계로 문제를 해결할 수 있습니다:

  • 0부터 배열 길이 - 1까지 반복합니다.
  • nums[i]가 짝수이면 즉시 "Even"을 반환합니다.
  • 반복이 끝날 때까지 짝수를 찾지 못했다면 "Odd"를 반환합니다.

이 방법의 시간 복잡도는 O(n)이며, 짝수를 조기에 발견하면 불필요한 연산 없이 바로 종료되므로 매우 효율적입니다.

예제 코드

def solve(nums):
   for i in range(len(nums)):
      if not nums[i] & 1:
         return "Even"
 
   return "Odd"
   
nums = [5,7,4,2,6]
print(solve(nums))

코드에서 not nums[i] & 1은 비트 연산을 활용한 표현입니다. 어떤 수와 1을 비트 AND(&) 연산하면 마지막 비트만 남게 되는데, 이 값이 0이면 해당 수는 짝수입니다. 즉, 나머지 연산자(%) 대신 비트 연산으로 홀짝 여부를 검사하는 것입니다.

입력

[5,7,4,2,6]

출력

Even

정리

n개 숫자의 곱의 홀짝성을 구할 때는 전체 곱을 계산할 필요가 없습니다. 배열을 한 번만 순회하면서 짝수의 존재 여부만 확인하면 되며, 이는 곱셈에서 짝수가 하나라도 섞이면 결과가 항상 짝수가 된다는 산술적 성질 덕분입니다.