서울시에 일직선 모양의 새로운 도로가 생겼습니다. 새로운 도로의 전체 길이는 l이고 도로에는 총 n개의 가로등이 세워졌습니다. 이 도로의 모든 가로등에 전구를 사서 달려고 합니다. 전구를 선택하는 기준은 다음과 같습니다.

  1. 전구는 길의 좌측, 우측 방향으로 각각 d 길이만큼 길을 밝힐 수 있고, d는 자연수입니다.
  2. 모든 가로등에는 같은 종류(d 값이 같은)의 전구를 달아야 합니다.
  3. 안전을 위하여 도로위에 어두운 부분이 있어서는 안 됩니다.

이때, d 값이 충분히 크다면 전체 도로를 밝게 비출 수 있지만, d 값이 작아진다면 도로 위에 빛이 닿지 않는 부분이 생길 수도 있습니다. 따라서, 도로 위에 어두운 부분이 생기지 않도록 하는 d 값 중 최솟값을 구하려고 합니다. 전체 도로의 길이 l, 가로등이 세워져 있는 위치가 들어있는 배열 v가 매개변수로 주어질 때, 위의 모든 조건을 만족하는 d 의 최솟값을 return 하도록 solution 함수를 완성해주세요.

제한사항

  • l은 1 이상 1,000,000,000 이하의 자연수입니다.
  • v에는 가로등의 위치정보가 들어있습니다.
  • 가로등의 위치는 0 이상 l 이하의 정수이며, 같은 위치에 2개 이상의 가로등이 있는 경우는 주어지지 않습니다.
  • 가로등의 개수는 1이상 1,000 이하의 자연수입니다.

입출력 예

l v output
15 [15,5,3,7,9,14,0] 3
5 [2,5] 2

다른 사람의 풀이

def solution(l, v):
    v.sort()
    d_list = [] # 가로등 사이의 거리
    
    if 0 not in v:
        d_list.append(v[0])
    
    # 가로등 사이의 최소 거리
    for x, y in zip(v[1:], v[:-1]):
        if (x - y) % 2 == 0:
            dict = (x - y) // 2
        else:
            dict = (x - y) // 2 + 1
        d_list.append(dict)
    
    if l not in v:
        d_list.append(l - v[-1])
    
    return max(d_list)