문제 https://www.acmicpc.net/problem/1449
N, L = map(int, input().split())
points = list(map(int, input().split()))
points.sort()
tape = 1
start = points[0]
end = (start-0.5) + L
위 코드가 이해를 돕기 위한 코드라면 밑에는 깔끔하게 정리했다.
tape = 1
end = points[0]-0.5 + L
for p in points:
if p <= end:
pass
else:
tape+=1
end = p - 0.5 + L
print(tape)
아직 나에겐 쉬운 알고리즘 문제란 없는 듯 하다. 테이프를 붙여나가기 때문에 tape=1 값을 주고 시작하는 것과 end값을 업데이트해주는 것이 햇갈렸다.
테이프의 길이가 자연수이기 때문에 마지막 코드블록에서 p<end라고 해줘도 정답이 나온다.
백준에서 정답이 나오긴 했지만 내가 봐도 좋은 코드가 아닌 것 같다. 나중에 코드를 바꿔야겠다.