본문 바로가기

CS/알고리즘

백준 17266번 파이썬 어두운 굴다리

맞추긴 맞춤

다른 분들 코드를 보다가 너무 깔끔한 풀이가 있어 놀라웠다

import sys
N=int(sys.stdin.readline())
M=int(sys.stdin.readline()) #가로등의 개수 M
p=list(map(int,sys.stdin.readline().split())) #가로등들의 위치 x를 담은 리스트

def ceil(n):
    if n==int(n):
        return int(n)
    else:
        return int(n)+1
        
if M==1:
    print( max(N -p[0],  p[0]) )
else:
    for i in range(len(p)):
        if i==0: #맨처음 가로등
            h=p[0] 
        elif i==len(p)-1:
            h=max(h, N - p[i])
        else: #맨처음과 맨 마지막을 제외한 가로등들
            h=max(h, ceil( (p[i]-p[i-1]) / 2) ) #가로등과 가로등 사이의 중간지점(빛이 닿는 마지막 부분)
            
    print(h)

 

 

맨 처음과 맨 마지막을 제외한 가로등들을 볼 때

max를 꼭 추가해줘야 한다

조명이 끝까지 닿아서 불이 꺼진 곳이 없도록

max로 계속 갱신해 나가야 한다!

 

모든 경우의 수를 포함해서 빈틈없이 푸는 연습을 많이 하자.

 


https://velog.io/@cococoo1622/백준Python-17266번-어두운-굴다리

 

깔끔하게 푸신 분의 풀이

 

[백준/Python] 17266번 어두운 굴다리

17266번 어두운 굴다리

velog.io

 

 

import math
n=int(input())
M=int(input())
x = list(map(int,input().split()))
height = 0
for i in range(1,len(x)):
    height = max(math.ceil((x[i]-x[i-1])/2), height)
print(max(height,x[0],n-x[-1]))

맨 처음 가로등과 맨 마지막 가로등을 나는 if else로 나눴는데

그러지않고 마지막에 print max 해서 깔끔하게 푼 방법