백준 알고리즘 2485번: 가로수 python

tomkitcount·2025년 3월 24일

알고리즘

목록 보기
27/304

https://www.acmicpc.net/problem/2485

해결 키 포인트 :

  • 첫 가로수 위치 변수로 저장
  • 가로수 간격 배열로 저장
  • 간격들중 최대 공약수 찾기(math 라이브러리 gcd 메소드 이용,유클리드 호제법으로도 가능)
  • 간격을 최대공약수로 나누어 1을 빼준 값이 나무를 심어야 하는 개수
import sys
from math import gcd

# 이미 심어져 있는 가로수 수 
N = int(sys.stdin.readline())

# 첫 가로수 위치 
a = int(sys.stdin.readline())

# 가로수들 사이의 값을 저장할 배열
arr = []

# 가로수들 사이의 간격 저장 
for i in range(N-1):
    num = int(sys.stdin.readline())
    arr.append(num - a)
    a = num

# arr에 들어있는 모든 수들의 최대공약수 찾기
g = arr[0]
for j in range(1, len(arr)):
    g = gcd(g, arr[j])

# 둘 사이에 심을 가로수 개수: 간격 // 최대공약수 - 1
result = 0
for each in arr:
    result += each // g - 1
print(result)
profile
To make it count

0개의 댓글