알고리즘/[python] 백준 BOJ
[python] 백준 2485 가로수
Alan_Kim
2023. 3. 30. 21:36
728x90
반응형
https://www.acmicpc.net/problem/2485
2485번: 가로수
첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가
www.acmicpc.net
문제 해결
- 각 나무 사이의 거리를 모아서 최대 공약수를 구한다.
- 최대 공약수를 나무와 나무 사이 거리로 생각하여 나무에서 최대 공약수만큼 떨어진 곳에 나무가 없으면 나무를 세우면 된다.
CODE
import sys
input = sys.stdin.readline
import math
n = int(input())
a = int(input()) # 첫 번째 나무 좌표
A = []
for i in range(n-1):
num = int(input())
A.append(num-a) # 나무와 나무 사이 거리
a = num
g = A[0] # 첫 번째 나무와 두 번째 나무 사이 거리
for j in range(1,len(A)):
g = math.gcd(g, A[j])
result = 0
for each in A:
result += each//g -1
print(result)
728x90
반응형