https://www.acmicpc.net/problem/17087
문제
소스코드
import sys
def gcd(a, b):
if a % b == 0:
return b
else:
return gcd(b, a % b)
n, s = map(int, sys.stdin.readline().split())
a = list(map(int, sys.stdin.readline().split()))
distance = []
for i in a:
x = abs(s - i)
if x != 0:
distance.append(x)
result = distance[0]
for i in distance[1:]:
result = gcd(i, result)
print(result)
풀이
- 문제에서 말하는 D의 최대값은 동생들과의 거리의 최대공약수를 의미한다.
- 수빈이의 위치에서 동생들과의 거리를 distance에 저장한다. 수빈이의 위치와 동생의 위치가 같아 거리가 0일 경우 distance에 포함하지 않는다. 거리는 음수가 될 수 없기 때문에 abs(절댓값)을 사용한다.
- result를 distance[0]으로 저장하고 gcd의 매개변수로 넣고 결과를 다시 저장하면 동생들과의 거리의 최대공약수를 구할 수 있다.