반응형
정수 10개를 입력받아 이를 42로 나눈 나머지 중 서로 다른 수가 몇개인가를 구하는 문제이다.
어떤 수를 42로 나누면 나머지가 0~41까지 나올 수 있으므로 이를 저장하는 배열 a[42]를 만들어 놓은 후
나머지가 n이라면 a[n]의 수를 1 증가시키는 방법으로 0부터 41까지의 나머지를 찾을 수 있겠다.
여기서는 서로 다른 수의 갯수를 찾는 것이므로
a[n]이 1이 아닌경우에만 1을 넣어주고 모든 수를 입력 받은 후에는 for문을 이용하여 a[ ] 배열에서 값이 1인 것들만 찾아서 카운트해주면 된다.
#include <stdio.h>
int main() {
int n;
int a[42] = { 0 };
int count = 0;
for (int i = 1; i <= 10; i++) {
scanf_s("%d", &n);
if (a[n%42] != 1) {
a[n % 42]++;
}
}
for (int i = 0; i < 42; i++) {
if (a[i] == 1) {
count++;
}
}
printf("%d", count);
}
서로 다른 수의 갯수를 세는 count라는 변수를 만들어 a[0]부터 a[41]까지 반복하면서 a[i]가 1인 경우에 count를 증가시키면 쉽게 찾을 수 있다.
반응형
'C > 백준알고리즘' 카테고리의 다른 글
[C] 백준알고리즘 #8958 OX퀴즈 (0) | 2021.01.21 |
---|---|
[C] 백준알고리즘 #1546 평균 (0) | 2021.01.20 |
[C] 백준알고리즘 #2577 숫자의 개수 (0) | 2021.01.19 |
[C] 백준알고리즘 #2562 최댓값 (0) | 2021.01.19 |
[C] 백준알고리즘 #10818 최소, 최대 (0) | 2021.01.19 |