ps:problems:boj:1449
수리공 항승
ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 1449 |
문제명 | 수리공 항승 |
레벨 | 실버 3 |
분류 |
그리디 |
시간복잡도 | O(nlogn) |
인풋사이즈 | n<=1000 |
사용한 언어 | Python |
제출기록 | 30840KB / 72ms |
최고기록 | 60ms |
해결날짜 | 2022/04/13 |
풀이
- 기초적인 그리디 유형
- 점들을 정렬한 뒤에, 가장 왼쪽점에서부터 순회한다. 가장 왼쪽점에 테이프의 왼쪽 끝을 붙이면, 그 점에서 거리가 L-1 이하인 점들은 모두 지금의 테이프로 커버할수 있으므로 추가 테이프가 필요 없다. 거리가 L-1 이상인 점을 만나면, 새로운 테이프의 왼쪽 끝을 붙이고 반복한다.
- 시간복잡도는 O(nlogn)
코드
"""Solution code for "BOJ 1449. 수리공 항승".
- Problem link: https://www.acmicpc.net/problem/1449
- Solution link: http://www.teferi.net/ps/problems/boj/1449
Tags: [Greedy]
"""
INF = float('inf')
def main():
N, L = [int(x) for x in input().split()] # pylint: disable=unused-variable
pos_list = [int(x) for x in input().split()]
left = -INF
answer = 0
for pos in sorted(pos_list):
if pos >= left + L:
left = pos
answer += 1
print(answer)
if __name__ == '__main__':
main()
ps/problems/boj/1449.txt · 마지막으로 수정됨: 2022/04/13 15:57 저자 teferi
토론