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

 

1449번: 수리공 항승

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

www.acmicpc.net


    • 테이프를 자를 수 없으므로 길이가 L 로 고정되어있다.
    • 좌우로 0.5 패딩을 붙인다고 했을 때, 테이프를 한번 붙일 때 커버되는 크기가 정해진다.
    • 앞에서부터 순서대로 테이프를 붙여나가면서, 커버되지 않는 구멍이 생길때만 테이프를 새로 붙여준다.
    • 테이프를 겹치게 붙일 수 있기 때문에, 마지막 위치를 신경쓰지 않아도 된다.

N, L = map(int, input().split())
breaks = sorted(map(int, input().split()))  # 가까운 구멍부터 차례대로 돌기 위해 정렬해놓음
cover = cnt = 0

for cur in breaks:                          # 구멍을 하나씩 확인하면서
    if cover < cur:                         # 이전의 테이프로 막히지 않은 구멍이라면
        cover = cur + L - 0.5               # 테이프를 길이만큼 붙임
        cnt += 1

print(cnt)

'PS > BOJ' 카테고리의 다른 글

[백준] 1238 : 파티  (0) 2021.05.16
[백준] 1167 : 트리의 지름  (0) 2021.05.15
[백준] 1717 : 집합의 표현  (0) 2021.05.12
[백준] 12852 : 1로 만들기 2  (0) 2021.05.11
[백준] 2263 : 트리의 순회  (0) 2021.05.07

+ Recent posts