본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2485 가로수

by Alan_Kim 2023. 3. 30.
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
반응형

댓글