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