최대 1 분 소요

문제 링크 : https://www.acmicpc.net/problem/1449

image



풀이 코드Permalink


N, L = map(int, input().split())

hole_list = list(map(int, input().split()))

hole_list_sorted = sorted(hole_list)

num_tape = 1
st_point = hole_list_sorted[0] - 0.5
while hole_list_sorted:
    if hole_list_sorted[0] < (st_point + L) :
        del(hole_list_sorted[0])
    else :
        st_point = hole_list_sorted[0] - 0.5
        num_tape += 1
print(num_tape)



풀이 해설Permalink


맨처음 문제를 이해 못해서 잠시 헤매고 있었는데

예제 입력 1 인
4 개의 누수 지점과 길이 2의 테이프
각 누수 지점은 왼쪽으로 부터 1, 2, 100, 101 지점에서 누수

0.5~2.5 까지 테이프 한 개, 99.5~101.5 까지 테이프 한 개 해서 총 두 개가 필요하다 라는 뜻이었습니다

예제 입력 3을 보아하니 꼭 정렬된 순서로 입력을 주는건 아닌 것으로 보여집니다

그래서 입력받은 누수 지점을 정렬한 뒤
첫 누수지점의 -0.5 부분부터 테이프의 길이 +L 까지 그 안에 드는 누수지점은 del을 통해서 지워나가면서
테이프 +L 이상의 지점이 아직 남아있다면 테이프의 개수를 추가하고 똑같이 반복함으로써 풀도록 했습니다

태그: ,

카테고리:

업데이트:

댓글남기기