반응형
https://www.acmicpc.net/problem/1449
1. 문제
길이가 L인 테이프를 가지고, 물이 새는 곳을 막아야한다. 물을 막을 때는 좌우 0.5만큼을 더 붙여줘야한다.
테이프를 자를 수 없고, 테이프를 겹쳐서 붙이는 것도 가능하다.
2. 접근
물이 새는 연속된 위치의 길이가 테이프-1 (-1은 좌우 0.5를 의미) 보다 짧을 경우, 테이프를 한번에 붙인다. 물이 새는 연속된 위치의 길이가 테이프 -1 보다 길 경우에는 테이프를 자를 수 없기 때문에 테이프를 따로 붙인다.
1. 물이 새는 곳의 위치를 오름차순으로 정렬
2. 테이프 길이보다 짧을 때까지의 연속된 물이 새는 곳을 구한다.
3. 테이프 길이보다 길 경우 테이프를 새로 쓴다.
3. 소스코드
n, l = map(int, input().split())
p = sorted(list(map(int, input().split())))
def tape(p, l):
count = 1
start = p[0]
for i in range(len(p)):
if p[i] - start > l - 1:
count += 1
start = p[i]
return count
print(tape(p, l))
반응형
'컴퓨터공학 > 알고리즘' 카테고리의 다른 글
Algorithm 01. 완전 검색 1 (0) | 2020.05.14 |
---|---|
Python Algorithm. 1주차 스터디 계획 (0) | 2020.05.11 |
[백준] 1049. 기타줄 (0) | 2020.05.09 |
[백준] 1120. 문자열 (0) | 2020.05.09 |
[백준] 10610. 30 (0) | 2020.05.09 |