코딩테스트 준비/백준

[백준] 17087번 숨바꼭질 6 - 파이썬(Python)

youjin86 2021. 8. 23. 17:30

https://www.acmicpc.net/problem/17087

 

17087번: 숨바꼭질 6

수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이

www.acmicpc.net

 

문제

 

접근법

 

문제와 예제를 봤을 때는 최소 차이가 답인 거 같아서 최소 차이값만 찾아 제출했는데 틀렸다 나옴.

찾아보니 차의 절댓값들의 최대공약수를 구해야한다 나와있어 그렇게 우선 제출은 함.

 

근데 왜 최댓값을 구하는데 최소의 값을 찾고, 그 최소의 값들 중 최대공약수를 찾는 지 모르겠음...

 

[과정]

수빈의 위치와 동생들의 위치의 차를 절댓값해서 ck배열에 저장

ck배열에서의 최대공약수를 구하기

 

 

코드

import math

N,S=map(int,input().split())
A=list(map(int,input().split()))
ck=[]

ans=1000000000
for i in A:
    ck.append(abs(i-S))

ans=ck[0]
for i in range(1,N):
    ans=math.gcd(ck[i],ans)
    
print(ans)