Algorithm/백준

[백준/Python] 숨바꼭질 6

poppy 2021. 10. 5. 11:38
반응형

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

 

17087번: 숨바꼭질 6

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

www.acmicpc.net

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