간단한 수학 문제다.
처음에 최댓값을 구해야하는 문제라 그리디적인 문제인가 했는데 인풋값이 되게 작아서 완전탐색으로 돌려도 충분한 문제였다.
import java.io.*;
import java.util.*;
public class Main {
static int n;
static int[] stoves;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
stoves = new int[n];
st = new StringTokenizer(br.readLine());
for(int i=0; i<n; i++) {
stoves[i] = Integer.parseInt(st.nextToken());
}
/*
주어진 배열에서 이들의 공약수를 구한다. 가장 많은 수의 공약수인 값을 찾아내는 문제.
n도 최대 100개, 반지름의 최대 크기도 100.
해봤자 10000번이니까 시초 안날것 같다.
*/
int ans = 0;
for(int i=2; i<=100; i++) {
int cnt = 0;
for(int j=0; j<n; j++) {
if(stoves[j] % i == 0) cnt++;
}
ans = Math.max(ans, cnt);
}
System.out.println(ans);
}
}