- C언어 : 1차원 배열(4)
03.JUN.2022
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개
있는지 출력하는 프로그램을 작성하시오.
#include <stdio.h>
int main()
{
int input, count = 0;
int arr[42] = { 0, };
for (int i = 0; i < 10; i++) { // 서로 다른 수 10개 입력받기
scanf("%d", &input);
// 배열 arr[42]를 돌며 입력받은 수 % 42와 같은 수의 index에 +1
int n = input % 42;
for (int j = 0; j < 42; j++) {
if (n == j) {
arr[j]++;
}
}
}
// arr 배열을 돌며 서로 다른 수 count 하기
for (int i = 0; i < 42; i++) {
if (arr[i]) count++;
}
printf("%d", count);
return 0;
}
나머지의 경우를 담을 수 있는 배열 arr을 arr[42]로 정의.
<첫 번째 for문>
입력받는 수는 10개라고 정해져 있으므로 for문의 범위를 잡아 입력을 받고, 입력받은 수 % 42를 변수 n에 담아주었다.
그리고 arr[42]를 돌며 변수 n과 같은 수를 가진 index에 +1을 시켜준다.
예를 들어 숫자 '126' 입력이 들어왔을 때, 126 % 42 == 0이므로 arr[0]에 +1이 된다.
<두 번째 for문>
arr 배열을 돌며 각 index에 들어있는 값이 0이 아닐 때를 센다.
예를 들어 입력에 1~10을 입력했다면 각 숫자의 %42는 1~10이다. 이는 첫 번째 for문에서 arr[1]~arr[10]에 +1의 값이 들어가 있을테니 count 했을 때 총 10개의 서로 다른 값이 나온다.