[백준] 1449 : 수리공 항승 (Python)
문제 링크 : https://www.acmicpc.net/problem/1449
풀이 코드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 이상의 지점이 아직 남아있다면 테이프의 개수를 추가하고 똑같이 반복함으로써 풀도록 했습니다
댓글남기기