
from sys import stdin
n = int(stdin.readline())
arr = list(map(int, stdin.readline().split()))
arr.sort()
# 어차피 n <= 100
res = -1
for i in range(n):
tmp = arr[i]
cnt = 1
for j in range(i + 1, n):
if arr[j] % tmp == 0:
cnt += 1
res = max(res, cnt)
print(res)
가장 작은 원소 기준으로 했는데
3
6 9 12
의 입력 예시에서
2
가 나왔다. 반지름의 길이를 3으로 잡으면 3이 답이 되어서 fail
from sys import stdin
n = int(stdin.readline())
arr = list(map(int, stdin.readline().split()))
arr.sort()
# 어차피 n <= 100
res = 0
for i in range(2, max(arr) + 1):
cnt = 0
for j in range(n):
if arr[j] % i == 0:
cnt += 1
res = max(res, cnt)
print(res)
주어진 가장 큰 수까지 수들에 대해
수가 해당 값으로 나눠지면 cnt += 1 하는 방식으로 해결했다.
이걸 해결 못해서 20분동안 헤맨게 화난다.