[파이썬] 2981번. 검문 풀이
·
알고리즘과 코딩 테스트/백준 25단계
잘 생각해보자. N개의 주어진 수가 각각 A, B, C 라고 하자. 이때, 문제에 따르면 A, B, C를 이렇게 M으로 표현할 수 있다. A = M x a(미지수인 몫) + R(항상 일정한 나머지) B = M x b + R C = M x c + R 여기서 R을 제거하기 위해 A에서 B를, B에서 C를 뺀다고 하면 다음과 같은 식이 성립한다. A - B = M(a - b) B - C = M(b - c) 그렇다면 M은 A-B 와 B-C의 공약수이다. 이런 원리로, A~Z까지 입력받은 모든 수에 대해(오름차순), M은 B - A, C - B, ...... Z - Y의 공약수들이다. 즉, 이웃한 것끼리 뺀 수들의 최대공약수의, 1을 제외한 모든 약수가 M이 될 수 있는 것이다. from math import g..