[백준] 1477 : 휴게소 세우기

유니·2022년 12월 27일
0

백준

목록 보기
12/12

문제링크

풀이

import math
import sys

input = sys.stdin.readline
n, m, l = map(int, input().split())
분기점 = [0] + list(map(int, input().split())) + [l]
분기점.sort()

for i in range(m):
  구간길이 = [분기점[i+1] - 분기점[i] for i in range(n+1)]

몇등분 = [1] * len(구간길이)

for _ in range(m):
  등분된길이 = [math.ceil(x / y) for x,y in zip(구간길이, 몇등분)]
  더나눌구간 = 등분된길이.index(max(등분된길이))
  몇등분[더나눌구간] += 1
  
최대구간길이 = max([math.ceil(x / y) for x,y in zip(구간길이, 몇등분)])
print(최대구간길이)

풀이방법

  1. 각 구간길이각 구간길이를 몇등분할지 저장하는 배열을 선언한다.
  2. m번의 시행마다 구간길이 / 몇등분을 반올림한 결과가 가장 큰 인덱스의 등분을 +1 증가시킨다.
  3. 최종적으로 구간길이 / 몇등분 을 반올림한 결과가 가장 큰 값이 휴게소간 최대거리가 가장 짧은때의 값이된다.

채점결과

profile
추진력을 얻는 중

0개의 댓글