링크 : https://www.acmicpc.net/problem/1449
1449번: 수리공 항승
첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나
www.acmicpc.net
- 문제
- 소요시간: 30분


- 설계하기(접근방법)
1. 입력받기
구멍의 개수와 테이프의 길이를 입력받는다
2. 구현하기
테이프를 잘라서 사용할 수 없으니
중간부터 붙여서 이득을 보는 경우는 없다.
그리디하게 앞에서부터 일단 붙여나가야 한다
리스트를 정렬해주고 테이프를 앞에서부터 붙인다
첫번 째 구멍부터 테이프를 붙인다
그러면 테이프 끝의 위치는
구멍 + 테이프의 길이가 될 것이다
현재 구멍보다 테이프 끝의 위치가 큰 경우 pass한다
현재 구멍보다 테이프의 위치가 작거나 같은 경우,
테이프의 길이가 모자란 것이니
현재 구멍 + 테이프의 길이로 초기화 해준 후
테이프를 사용한 개수를 +1 해준다
3. 출력하기
사용한 총 테이프의 개수를 출력한다
- 코드(출력)
n, l = map(int, input().split())
location = list(map(int, input().split()))
location.sort()
cnt = 0
tape = location[0]
for i in location:
if tape <= i:
cnt += 1
tape = (i + l)
print(cnt)
- 얻어갈 부분
1. 구멍의 위치를 제거해 나가려다가, 테이프의 위치와 구멍의 위치만 비교하면 된다는 것을 깨닫고 코드를 변경했다.
'알고리즘(백준) > 그리디' 카테고리의 다른 글
| [알고리즘/그리디] 15903번 : 카드 합체 놀이 - python (0) | 2024.10.09 |
|---|---|
| [알고리즘/그리디] 2847번 : 게임을 만든 동준이 - python (0) | 2024.10.09 |
| [알고리즘/그리디] 1049번 : 기타줄 - python (0) | 2024.03.05 |
| [알고리즘/그리디] 2170번 : 선 긋기 - python (0) | 2024.02.26 |
| [알고리즘/그리디] 2012번 : 등수 매기기 - python (0) | 2024.02.16 |