[백준]1449-그리디(수리공 항승)

shs131·2022년 4월 21일
0

알고리즘

목록 보기
3/6

문제풀이

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

  1. 인풋 받기
N, L = map(int, input().split())
points = list(map(int, input().split()))
points.sort()
  1. 시작점에서부터 테이프를 붙여나간다고 생각하고 start지점과 end지점을 설정한다
    테이프를 붙여나간다고 가정했기 때문에 tape=1로 값을 지정해준다
tape = 1
start = points[0]
end = (start-0.5) + L

위 코드가 이해를 돕기 위한 코드라면 밑에는 깔끔하게 정리했다.

tape = 1
end = points[0]-0.5 + L
  1. 시작점에서 테이프를 붙인 지점이(end) p보다 크다면 pass하고
    작거나 같다면 테이프의 개수를 추가해주고 end지점을 업데이트한다
for p in points:
    if p <= end:
        pass
    else:
        tape+=1
        end = p - 0.5 + L
print(tape)

마무리

아직 나에겐 쉬운 알고리즘 문제란 없는 듯 하다. 테이프를 붙여나가기 때문에 tape=1 값을 주고 시작하는 것과 end값을 업데이트해주는 것이 햇갈렸다.
테이프의 길이가 자연수이기 때문에 마지막 코드블록에서 p<end라고 해줘도 정답이 나온다.
백준에서 정답이 나오긴 했지만 내가 봐도 좋은 코드가 아닌 것 같다. 나중에 코드를 바꿔야겠다.

profile
개발자가 되고 싶은 1인

0개의 댓글