728x90
반응형
https://www.acmicpc.net/problem/1911
문제
어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N(1 ≤ N ≤ 10,000)개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이가 L(1 ≤ L ≤ 1,000,000)인 널빤지들을 충분히 가지고 있어서, 이들로 다리를 만들어 물웅덩이들을 모두 덮으려고 한다. 물웅덩이들의 위치와 크기에 대한 정보가 주어질 때, 모든 물웅덩이들을 덮기 위해 필요한 널빤지들의 최소 개수를 구하여라.
입력
첫째 줄에 두 정수 N과 L이 들어온다.
둘째 줄부터 N+1번째 줄까지 총 N개의 줄에 각각의 웅덩이들의 정보가 주어진다. 웅덩이의 정보는 웅덩이의 시작 위치와 끝 위치로 이루어진다. 각 위치는 0 이상 1,000,000,000 이하의 정수이다. 입력으로 주어지는 웅덩이는 겹치지 않는다.
출력
첫째 줄에 모든 물웅덩이들을 덮기 위해 필요한 널빤지들의 최소 개수를 출력한다.
풀이
Code
import sys, math
input = sys.stdin.readline
n, l = map(int, input().split())
# 1. 웅덩이 위치 정렬하기
info = sorted([list(map(int, input().split())) for _ in range(n)])
# 2. 널빤지 필요 수 변수 정의
ans = 0
# 3. 널빤지의 마지막 위치 정의
now_e = 0
# 4.
for i in range(n) :
s, e = info[i]
# 4-1. 시작 위치가 이미 덮여있을 경우
if now_e >= s : s = now_e + 1
# 4-2. 널빤지 개수 카운트
cnt = math.ceil((e - s) / l)
ans += cnt
# 4-3. 널빤지의 마지막 위치 설정
now_e = s + l * cnt - 1
# 5. 결과 출력
print(ans)
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python/BOJ] 3649. 로봇 프로젝트 (0) | 2023.09.03 |
---|---|
[Python/BOJ] 1484. 다이어트 (0) | 2023.09.02 |
[Python/BOJ] 1325. 효율적인 해킹 (0) | 2023.09.02 |
[Python/BOJ] 15812. 침략자 진아 (0) | 2023.09.02 |
[Python/BOJ] 2290. LCD Test (0) | 2023.09.02 |