Sangmun

백준 1449번 수리공 본문

알고리즘/백준

백준 1449번 수리공

상상2 2023. 2. 3. 15:37

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

 

1449번: 수리공 항승

첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나

www.acmicpc.net

누수가 발생하는 지점을 리스트로 받고 오름차순으로 정렬을 해주어 가장 가까운 누수지점부터 차례로 테이프를 붙여가면서 테이프의 길이를 넘어갈때 개수를 하나씩 추가해주면 된다.

 

import sys
input = sys.stdin.readline

n, l = map(int,input().split())

leak_point = list(map(int,input().split()))
leak_point.sort()

start_point = -1
end_point = -1

answer = 0
for idx, each in enumerate(leak_point):

    if start_point == -1:
        start_point = each - 0.5
        end_point = each + 0.5
    else:
        end_point = each + 0.5

    length = end_point - start_point

    if length == l:
        answer += 1
        start_point = -1
    elif length > l:
        answer += 1
        start_point = each - 0.5

        # 마지막에 하나 남았을때 처리하기 위한 로직
        if idx + 1 == n:
            answer += 1
    else:
        # 마지막에 하나 남았을때 처리하기 위한 로직
        if idx + 1 == n:
            answer += 1

print(answer)

'알고리즘 > 백준' 카테고리의 다른 글

백준 1495번 기타리스트  (0) 2023.02.06
백준 7490번 0 만들기  (0) 2023.02.04
백준 1049번 기타줄  (0) 2023.02.03
백준 11057 오르막 수  (0) 2022.12.22
백준 11052번 카드 구매하기 파이썬  (0) 2022.12.21
Comments