숫자 에 가장 많이 들어가는 숫자의 개수를 찾는 문제입니다.
단, 6과 9는 동시에 사용가능하다는 조건이 있습니다.
즉, 6과 9의 개수의 평균을 반올림한 개수를 구해서 보정을 해주면 됩니다.
문자열을 이용하는 방법과, 정수를 이용하는 방법이 있습니다.
여기에서는 정수를 이용하여 풀었습니다.
먼저 0~9까지의 정수 개수를 구하기 위해 배열을 선언한 뒤
반복문으로 일의자리부터 순회하면서 수를 구해줍니다.
int count[10] = {0};
while(N > 0) {
count[N%10]++;
N /= 10;
}
그 다음 6과 9는 서로 사용가능하기 때문에 보정을 해줍니다.
count[6] = (count[6] + count[9] + 1) / 2;
개수 범위의 최솟값은 0이므로
처음 변수를 0으로 설정한 후 최대값을 구해줍니다.
max = 0;
for (i = 0; i < 9; ++i) {
if(max < count[i]) max = count[i];
}
#include <stdio.h>
int main() {
int count[10] = {0};
int i, N, max;
scanf("%d", &N);
while(N > 0) {
count[N%10]++;
N /= 10;
}
count[6] = (count[6] + count[9] + 1) / 2;
max = 0;
for (i = 0; i < 9; ++i) {
if(max < count[i]) max = count[i];
}
printf("%d", max);
return 0;
}