백준 2485번

코드

N=int(input())
arr=[]
tree=[]
cnt=0

for i in range(N):
  arr.append(int(input()))
  
for i in range(N-1):
  tree.append(arr[i+1]-arr[i])
  
tree.sort()

def gcd(a,b):
  while True:
    temp=a%b 
    if temp==0:
      return b
      break
    a=b 
    b=temp
    
num=gcd(tree[0],tree[1])  

for i in range(1,len(tree)):
  num=gcd(num,tree[i])

for i in range(len(arr)-1):
  cnt+=(arr[i+1]-arr[i])//num-1
  
print(cnt)

정리

배열을 입력받아서 각 배열 사이의 수의 최대공약수를 구해서 해결하면 되는 문제이다. 처음에 해결 방법을 못 찾아서 좀 헤매었는데 접근법을 알면 쉽게 해결 가능한 문제였다.

좋은 웹페이지 즐겨찾기