알고리즘 문제풀이
가로수 [백준 2485]
wiojfe
2024. 7. 9. 13:01
가로수들 사이 간격의 최대공약수를 구하면 쉽게 해결 가능하다.
https://www.acmicpc.net/problem/2485
import sys
import math
def gcd(a, b):
while b:
a, b = b, a % b
return a
input = sys.stdin.read
data = input().split()
n = int(data[0])
positions = list(map(int, data[1:]))
distances = [positions[i] - positions[i - 1] for i in range(1, n)]
current_gcd = distances[0]
for distance in distances[1:]:
current_gcd = gcd(current_gcd, distance)
total_trees_to_add = 0
for distance in distances:
total_trees_to_add += (distance // current_gcd) - 1
print(total_trees_to_add)