문제
웅덩이의 시작점에 초점을 맞춰 문제에 접근했습니다.
1. 널빤지의 위치를 탐색에 따라 갱신하며 웅덩이의 시작점과 비교합니다.
2. 웅덩이의 끝점과 앞에서 비교한 현재 위치와의 거리를 통해 널빤지의 개수를 구합니다.
3. 거리에 널빤지를 나눈 나머지값이 0이 아닌경우는 결국 널빤지가 하나 더 필요한 경우이고, 반대 경우는 나눈 몫만큼 널빤지가 필요합니다.
4. 위와 같은 분기 조건에 따라 널빤지의 개수와 현재 널빤치 지점을 갱신합니다.
N, L = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
arr.sort(key=lambda x : x[0])
point = arr[0][0]
cnt = 0
for i in range(N):
point = max(arr[i][0], point) # 널빤지의 최신 위치 비교
tmp = arr[i][1] - point # 널빤지 설치에 필요한 길이
if tmp % L: # 널빤지의 길이가 모자란 경우는 하나 더 추가
cnt += (tmp // L + 1)
point += (tmp // L + 1) * L
else: # 널빤지의 길이가 딱 맞아 떨어지는 경우
cnt += (tmp // L)
point += (tmp // L) * L
print(cnt)
피드백 및 개선점은 댓글을 통해 알려주세요😊