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

파이썬으로 구간 범위 내 홀수 개수 세는 프로그램 만들기

두 개의 음이 아닌 정수 leftright가 주어졌을 때, left부터 right까지(양쪽 경계값 포함) 범위 안에 있는 홀수의 개수를 구하는 문제입니다.

문제 이해하기

예를 들어 left = 3, right = 15라고 입력하면 출력은 7이 됩니다. 해당 구간의 홀수는 [3, 5, 7, 9, 11, 13, 15]로 총 7개이기 때문입니다.

풀이 접근 방법

모든 숫자를 하나씩 확인하는 대신, 수학적 성질을 이용하면 반복문 없이 한 번의 연산으로 답을 구할 수 있습니다.

  • left 또는 right 중 하나라도 홀수라면 → (right - left) // 2 + 1 반환
  • 둘 다 짝수라면 → (right - left) // 2 반환

동작 원리: 두 수의 차이(right - left)를 2로 나눈 몫은 구간 내 홀수 개수의 기본값이 됩니다. 경계값 중 하나라도 홀수가 포함되어 있다면 그 값 하나를 추가로 더해주는 것입니다. 이 방식은 시간 복잡도 O(1)로 매우 효율적입니다.

파이썬 구현 예제

아래 코드를 통해 직접 확인해 보세요.

def solve(left, right):
    if left % 2 == 1 or right % 2 == 1:
        return (right - left) // 2 + 1
    else:
        return (right - left) // 2

left = 3
right = 15
print(solve(left, right))

입력

3, 15

출력

7

마무리

이처럼 구간 내 홀수 개수를 구할 때는 각 숫자를 순회하는 대신 나눗셈 몫 연산(//)을 활용하면 코드도 간결해지고 실행 속도도 크게 향상됩니다. 특히 left와 right의 차이가 매우 큰 경우에도 즉시 결과를 얻을 수 있다는 점이 이 방법의 가장 큰 장점입니다.