Hanbit the Developer

[그리디] Python - 1449번, 수리공 항승 본문

Algorithm/백준

[그리디] Python - 1449번, 수리공 항승

hanbikan 2021. 3. 30. 14:45
import sys
input = sys.stdin.readline

N, L = map(int, input().split())
leaks = list(map(int, input().split()))
leaks.sort()

cntTape = 0
noLeakUntil = 0
for leak in leaks:
    if noLeakUntil < leak:
        noLeakUntil = leak + L - 1
        cntTape += 1

print(cntTape)

만약 테이프의 길이가 7이라고 했을 때, 10의 위치를 위해 9.5~16.5위치에 붙인다고 하면, 10~16의 위치까지의 누수도 해결이 된다.

우선 누수된 구간을 오름차순으로 정렬한다. 그리고 누수난 위치들을 for문으로 돌면서 순차적으로 테이프를 붙이되, 누수가 해결된 구간(noLeakUntil)을 갱신해주면서 테이프를 몇 번 썼는지(cntTape)를 증가시켜준다.