728x90
반응형
https://www.acmicpc.net/problem/1911
1911번: 흙길 보수하기
어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N (1 <= N <= 10,000) 개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이 L (L은 양의 정수)
www.acmicpc.net
문제 해결
- 웅덩이를 널빤지로 막는 문제
- 문제는 널빤지의 규격이 정해져 있고 웅덩이를 메우고 남는 너비가 다른 웅덩이의 일부 혹은 전체를 막을 수 있다는 것이다.
- 따라서 웅덩이를 원점에서 가장 가까운 것부터 메워가며 널빤지 끝자락을 포인트로 잡을 것이다.
- 널빤지를 효율적으로 사용하기 위해 다음 웅덩이의 일부를 이전 널빤지가 커버했으면 이어서 붙이고 전체를 커버했으면 다음 웅덩이를 커버하면 될 것이다. 독립적(널빤지가 다음 웅덩이에 영향을 안주면)이면 다음 웅덩이 시작점부터 널빤지를 놓으면서 붙이면 된다.
CODE
n, l = map(int, input().split()) # 웅덩이 개수, 널빤지 길이
pond = [tuple(map(int, input().split())) for _ in range(n)]
pond.sort(key= lambda x: (x[0],x[1]))
point = pond[0][0] # 널빤지 이어붙이고 끝자락을 변수 point로 둘 것이다. 초기에는 널빤지를 둔 곳이 없으므로 시작해야할 포인트로 변수를 잡는다.
cnt = 0
for start, end in pond:
if point > end:
continue
elif point < start:
point= start
dist = end - point
r = 1
if dist % l ==0:
r = 0
count = dist//l + r
point += count*l # 시작점에서 널빤지를 이어붙이고 마지막 끝자락
cnt += count
print(cnt)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1781 컵라면 (0) | 2023.04.05 |
---|---|
[python] 백준 16234 인구 이동 (0) | 2023.04.05 |
[python] 백준 12919 A와 B 2 (0) | 2023.04.05 |
[python] 백준 1422 숫자의 신 (0) | 2023.04.05 |
[python] 백준 9576 책 나눠주기 (0) | 2023.04.05 |
댓글