본문 바로가기
알고리즘

Python - 흙길 보수하기 (1911) 그리디

by jun.s.gi 2023. 6. 29.
728x90

https://www.acmicpc.net/problem/1911

 

1911번: 흙길 보수하기

어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N (1 <= N <= 10,000) 개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이 L (L은 양의 정수)

www.acmicpc.net

 

import sys
N, L = map(int, sys.stdin.readline().strip().split())
pool = [list((map(int, sys.stdin.readline().strip().split()))) for _ in range(N)]
pool.sort(key = lambda x : x[0])

end = -1 # 판자 오른쪽 끝 위치를 담는 변수
answer = 0
cnt = 0

for st, ed in pool:
    if st >= end: # 시작점이 판자 끝부분보다 뒤에 있으면
        cnt = (ed - st) // L
        cnt += 1 if (ed - st) % L else 0
        end = st + (cnt * L)
        
    else: # 시작점이 판자 끝부분보다 앞에 있다면
        cnt = (ed - end) // L
        cnt += 1 if (ed - end) % L else 0
        end = end + (cnt * L)

    answer += cnt

print(answer)
728x90

'알고리즘' 카테고리의 다른 글

C++ - 창고 다각형 (2304)  (0) 2023.07.17
Python - 계단 오르기 (2579) DP  (0) 2023.06.29
Python - 말이 되고픈 원숭이 (1600) BFS  (0) 2023.06.29
Python - 배 (1092) 그리디  (0) 2023.06.17
Python - 회장 뽑기(2660) - BFS  (0) 2023.06.15