개발 노트/알고리즘 문제
백준 2485 가로수
LeeInGyu
2025. 4. 4. 14:27
백준 2485 가로수
링크: 2485 가로수
접근 방법
- 간격을 파악 후, 간격들의 최대공약수를 구함
- 다수의 값에서 최대공약수를 구하는 것이 관건
소스 코드
소스 코드: 92571539 제출
import sys
from math import gcd
from functools import reduce
# 입력
N = int(sys.stdin.readline())
N_list = []
for _ in range(N):
N_list.append(int(sys.stdin.readline()))
# 간격 계산
N_gap_list = [0] * N
for idx in range(N-1):
N_gap_list[idx] = N_list[idx+1] - N_list[idx]
# 최대공약수 계산
gap = reduce(gcd, N_gap_list)
# print("gcd", gcd) # debug
# 출력
print((N_list[-1] - N_list[0])//gap + 1 - N)
결론
- 다수의 값에서 최대공약수를 구해야되는 문제는 처음 풀어봐서 많이 당황했다.
- math와 functools에 gcd와 reduce를 처음 알게 되어 공부가 필요할듯하다.
728x90
반응형