17266-s4 성공
This commit is contained in:
36
workbook_8708/17266-s4.py
Normal file
36
workbook_8708/17266-s4.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# 어두운 굴다리
|
||||
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
def solution():
|
||||
n = int(input().rstrip())
|
||||
m = int(input().rstrip())
|
||||
x = list(map(int, input().rstrip().split()))
|
||||
result = 0
|
||||
for i in range(1, m):
|
||||
now = (x[i]-x[i-1])//2 if (x[i]-x[i-1])%2==0 else (x[i]-x[i-1])//2 + 1
|
||||
result = max(result, now)
|
||||
|
||||
result = max(result, x[0]-0, n-x[-1])
|
||||
|
||||
print(result)
|
||||
|
||||
return
|
||||
|
||||
|
||||
solution()
|
||||
|
||||
"""
|
||||
걸린 시간: 26분
|
||||
|
||||
시간 복잡도: 0에서 첫 번째 위치를 빼는 것이랑, 끝에서 마지막 위치를 빼는 것을 포함하여 약 m번의 연산을 진행한다.
|
||||
m이 n보다 작으므로 전체 시간복잡도는 O(n)이다.
|
||||
|
||||
해설: 가로등이 놓일 위치 사이의 거리가 가장 큰 값을 2로 나눈 값이 답이다. 반씩 나눠서 그 구간을 커버해야하기 때문이다.
|
||||
x를 순차적으로 가면서 앞의 위치와 차이//2 중 최대를 찾으면 되는데, 이때, 차이가 홀수인 경우 +1을 해줘야 커버가된다.
|
||||
삼항연산자로 구분했지만 ceil을 하거나 -(-n//2)를 하면 같은 효과를 볼 수 있다.
|
||||
파이썬의 //는 무조건 음의 무한대로 내림하기 때문에 -5 // 2는 -2.5가 -3이 된다. => 올림 효과를 볼 수 있다.
|
||||
마지막으로 0과 n에는 가로등 하나가 온전히 감당해야 하므로 마지막에 비교해주면 끝.
|
||||
"""
|
||||
Reference in New Issue
Block a user