반응형
https://www.acmicpc.net/problem/17087
n, S = map(int, input().split())
pos = list(map(int, input().split()))
dif = list(set(abs(p - S) for p in pos)) # 수빈이와 동생들의 위치 차이 리스트
D = min(dif)
# 최대공약수 구하는 메서드
def gcd(a, b):
res = 0
while b:
res = a % b
a = b
b = res
return a
# 모든 동생들을 찾기 위한 D의 최대값 구하기
for d in dif:
D = gcd(d, D)
print(D)
1. 수빈의 위치와 동생의 위치의 차를 구하여 리스트에 저장한다.
2. 최대공약수를 구하는 메서드를 만든다.
2-1. 모든 동생들을 찾기 위한 D의 최대값은 (수빈의 위치 - 동생의 위치)의 최대공약수이다.
3. 반복문을 돌면서 D의 최대값을 구하고 D를 출력한다.
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준/Python] 괄호 (0) | 2021.10.06 |
---|---|
[백준/Python] 듣보잡 (0) | 2021.10.06 |
[백준/Python] 01타일 (0) | 2021.10.03 |
[백준/Python] 골드바흐의 추측 (0) | 2021.10.03 |
[백준/Python] 신나는 함수 실행 (0) | 2021.10.02 |