## 의사코드 ##
# 테이프의 최소 개수 = 물이 새는 곳의 개수(n)을 테이프의 길이(l)로 나눈 값을 올림한 값
# import math
# math.ceil(n/l)
import math
n, l = map(int, input().split())
point = list(map(int, input().split()))
# 테이프의 최소 개수 = 물이 새는 곳의 개수(n)을 테이프의 길이(l)로 나눈 값을 올림한 값
print(math.ceil(n/l))
## 의사코드 ##
# 물이 새는 곳의 위치를 오름차순 정렬
# point.sort()
# start = point[0] # 테이프를 붙인 시작점
# tape = 1 # 테이프의 개수
# for p in point[1:]:
# # 현재 위치가 테이프를 붙일 범위 내에 있으면 통과
# if p in range(start, start+l):
# continue
# # 범위 내에 없으면 새로운 테이프 사용, 테이프를 붙인 시작점을 현재 위치로 변경
# else:
# tape += 1
# start = p
n, l = map(int, input().split())
point = list(map(int, input().split()))
#물이 새는 곳의 위치를 오름차순 정렬
point.sort()
# 테이프를 붙인 시작점
start = point[0]
# 테이프의 개수
tape = 1
for p in point[1:]:
# 현재 위치가 테이프를 붙일 범위 내에 있으면 통과
if p in range(start, start+l):
continue
# 범위 내에 없으면 새로운 테이프 사용, 테이프를 붙인 시작점을 현재 위치로 변경
else:
tape += 1
start = p
print(tape)
-> 테이프를 붙인 시작점 변수를 활용해서 현재 위치가 테이프를 붙일 범위 내에 있으면 통과, 그렇지 않은 경우에는 테이프 추가
과정 확인
n=4
l=2
point = [1, 2, 100, 101]
"""
start: 1
테이프를 붙일 범위: 1 ~ 3
현재 위치: 2
통과
start: 1
테이프를 붙일 범위: 1 ~ 3
현재 위치: 100
테이프 추가: 2
start: 100
테이프를 붙일 범위: 100 ~ 102
현재 위치: 101
통과
"""