Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL count_if() 함수로 배열의 홀수·짝수 요소 개수 구하기

배열이 주어졌을 때, C++ 표준 템플릿 라이브러리(STL)를 활용하여 배열 안에 있는 홀수 요소와 짝수 요소의 개수를 찾는 것이 이 글의 목표입니다.

이 문제를 해결하기 위해 C++ STL에서 제공하는 count_if() 함수를 사용합니다.

count_if() 함수란?

count_if()는 지정한 조건을 만족하는 요소의 개수를 반환하는 STL 알고리즘 함수입니다. 세 개의 매개변수를 받습니다.

문법

count_if(LowerBound, UpperBound, function)

매개변수 설명

  • Lower Bound(시작 범위) — 배열 또는 다른 시퀀스의 첫 번째 요소를 가리킵니다.
  • Upper Bound(끝 범위) — 배열 또는 다른 시퀀스의 마지막 요소를 가리킵니다.
  • Function(조건 함수) — 지정된 조건에 따라 불리언(Boolean) 값을 반환합니다.

입력 및 출력 예시

입력: array[] = {2, 4, 1, 5, 8, 9}
출력: 홀수 요소는 1, 5, 9 → 총 3개
      짝수 요소는 2, 4, 8 → 총 3개

입력: array[] = {1, 2, 3, 4, 5, 10}
출력: 홀수 요소는 1, 3, 5 → 총 3개
      짝수 요소는 2, 4, 10 → 총 3개

문제 해결 접근 방법

  • 정수형 배열에 정수 값들을 입력받습니다.
  • 배열의 요소가 홀수인지 판별하는 bool 타입의 함수를 작성합니다. 선택된 요소가 홀수라면 나머지 요소들은 자동으로 짝수가 됩니다.
  • 첫 번째 요소와 마지막 요소, 그리고 조건 함수를 매개변수로 받는 count_if() 함수를 호출합니다.

구현 코드

#include <bits/stdc++.h>
using namespace std;
// 요소가 홀수인지 짝수인지 확인하는 함수
bool check(int i) {
    if (i % 2 != 0)
        return true;
    else
        return false;
}
int main() {
    int arr[] = { 2, 10, 1, 3, 7, 4, 9 };
    int size = sizeof(arr) / sizeof(arr[0]);
    int temp = count_if(arr, arr + size, check);
    cout << "홀수 개수 : " << temp << endl;
    cout << "짝수 개수 : " << (size - temp) << endl;
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

홀수 개수 : 4
짝수 개수 : 3

이처럼 count_if() 함수를 활용하면 별도의 반복문을 직접 작성하지 않고도 조건을 만족하는 배열 요소의 개수를 간결하고 효율적으로 계산할 수 있습니다. 전체 배열 크기에서 홀수 개수를 빼면 짝수 개수 역시 손쉽게 구할 수 있습니다.