[python] 백준 17087번

hyeo71·2023년 6월 11일
0

백준

목록 보기
22/24

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의 매개변수로 넣고 결과를 다시 저장하면 동생들과의 거리의 최대공약수를 구할 수 있다.

0개의 댓글