문제 설명
이번 글에서는 사용자가 입력한 배열의 유형을 판별하는 C 프로그램을 작성해 보겠습니다. 즉, 배열에 담긴 요소들이 모두 홀수인지, 모두 짝수인지, 아니면 홀수와 짝수가 섞여 있는 혼합형인지를 확인하는 것이 목표입니다.
해결 방법
사용자로부터 정수 배열을 입력받은 뒤, 해당 배열의 유형을 화면에 출력하면 됩니다.
예시 1 − 입력: 5 3 1 → 출력: 홀수 배열(Odd Array)
예시 2 − 입력: 2 4 6 8 → 출력: 짝수 배열(Even Array)
예시 3 − 입력: 1 2 3 4 5 → 출력: 혼합 배열(Mixed Array)
알고리즘
다음 알고리즘을 참고하여 사용자가 입력한 배열의 유형을 판별할 수 있습니다.
1단계 − 실행 시점에 배열의 크기를 입력받습니다.
2단계 − 배열의 각 요소를 입력받습니다.
3단계 − 배열의 모든 요소가 홀수라면 "Odd"(홀수 배열)를 출력합니다.
4단계 − 배열의 모든 요소가 짝수라면 "Even"(짝수 배열)을 출력합니다.
5단계 − 그 외의 경우에는 "Mixed"(혼합 배열)를 출력합니다.
예제 코드
다음은 사용자가 입력한 배열의 유형을 찾는 C 프로그램입니다.
#include<stdio.h>
int main(){
int n;
printf("enter no of elements:");
scanf("%d",&n);
int arr[n];
int i;
int odd = 0, even = 0;
printf("enter the elements into an array:\n");
for(i = 0; i < n; i++){
scanf("%d",&arr[i]);
}
for(i = 0; i < n; i++){
if(arr[i] % 2 == 1)
odd++;
if(arr[i] % 2 == 0)
even++;
}
if(odd == n)
printf("Odd Array");
else if(even == n)
printf("Even Array");
else
printf("Mixed Array");
return 0;
}코드 동작 원리
프로그램은 먼저 배열의 크기와 요소들을 입력받습니다. 이후 반복문을 통해 각 요소를 2로 나눈 나머지를 확인하여 홀수 개수(odd)와 짝수 개수(even)를 셉니다. 마지막으로 홀수 개수가 배열 전체 크기와 같으면 "Odd Array", 짝수 개수가 같으면 "Even Array", 그렇지 않으면 "Mixed Array"를 출력합니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Run 1: enter no of elements:5 enter the elements into an array: 2 4 8 10 12 Even Array Run 2: enter no of elements:5 enter the elements into an array: 1 23 45 16 68 Mixed Array
첫 번째 실행에서는 입력한 모든 값이 짝수이므로 "Even Array"가 출력되었고, 두 번째 실행에서는 홀수와 짝수가 섞여 있어 "Mixed Array"가 출력된 것을 확인할 수 있습니다.