본문 바로가기
python-algorithm

백준 2485 가로수

by 무적김두칠 2021. 12. 27.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def gcd(a,b):
   if b==0 : return a
   else :return gcd(b,a%b)
 
n=int(input())
nums=[int(input()) for i in range(n)]
nums.sort()
start=min(nums)
end=max(nums)
gcdAnswer=gcd(nums[1]-nums[0],nums[2]-nums[1])
for i in range(n-2):
   gcdAnswer = gcd(gcd(nums[i+1- nums[i], nums[i+2- nums[i+1]), gcdAnswer)
 
print( (end-start)//gcdAnswer-n+1)
cs

문제 읽어보면 추가 되는 나무들은 무조건 기존 나무 사이에만 넣을수있으므로
공차수열을 만들어야 하고
수열의 양 끝이 start, end 
공차는 입력받은 숫자들을 정렬시키고 수들의 차이의 최대공약수를 이용해서 구함
참고로 gcd는 연산의 교환법칙( commutative property) 에 대해서 참임

반응형

'python-algorithm' 카테고리의 다른 글

백준 11508 2+1 세일  (0) 2021.12.27
백준 13699 점화식  (0) 2021.12.27
백준 5347 LCM  (0) 2021.12.27
백준 1940 주몽  (0) 2021.12.27
백준 14490 백대열  (0) 2021.12.27

댓글