1초 뒤에 D만큼 움직여야 하고 모든 동생에게 닿을 수 있는 D의 최댓값을 구해야 되는 문제다.
즉, n개의 수 <-> 정수 s 차이의 최대공약수를 구해주면 되는 문제다.
편하게 파이썬의 math.gcd() 함수를 사용했다. gcd() 함수를 자세히 보니 다음과 같이 애스터리스트(*)표시가 있었다.
따라서 거리 차이 리스트를 '*' 표시를 붙여서 함수에 넘겨준 뒤 그 값을 출력하면 되는 문제였다. 파이썬 최고 .. 물론 이 방법이 아니면 유클리드 호제법으로 계속 수를 반복적으로 gcd구해주면 되겠다. 이번에는 파이썬 애스터리스트 문법을 배웠다는 거에 의의를 두고 라이브러리르 쓰겠다 ㅎㅎ
코드는 다음과 같다.
import math
n, s = map(int, input().split())
data = list(map(int, input().split()))
gaps = []
for v in data:
gaps.append(abs(s - v))
print(math.gcd(*gaps))
'Algorithm > BOJ' 카테고리의 다른 글
(다시 풀어볼 문제) [백준] 2981 검문 - python (0) | 2022.10.10 |
---|---|
[백준] 17103 골드바흐 파티션 - python (0) | 2022.10.10 |
[백준] 2407 조합 - python (0) | 2022.10.09 |
[백준] 15650 N과 M(2) - python (0) | 2022.10.09 |
[백준] 6588 골드바흐의 추측 (난이도 실버 1) - python (0) | 2022.10.08 |