1449 : 수리공 항승
문제
코드
import sys
input =sys.stdin.readline
n,l = map(int,input().split())
places = list(map(int,input().split()))
places.sort()
start = places[0]
end = places[0]+l ; cnt=1
for place in places:
if end<=place: #사이에 있는 경우
start = place
end = place+l
cnt+=1
print(cnt)
해설
n,l을 입력받고 places를 입력받고 정렬해준다.
그 이유는 위치를 오름 차순으로 봐야지 하나씩 넘어가며 체크가 가능하다
그 후 start,end 변수를 초기화하는데 start는 제일 앞부분 그리고 end는 start에서 테이프길이 만큼 더한 곳이다.
위치로부터 좌우 0.5씩 감아야하니깐 위치 한칸당 1의 테이프를 붙여야한다고 생각하면 된다
즉 1,2 위치를 막기 위해서는 2의 길이 테이프가 필요한데 붙여할 곳이 0.5~2.5인 2의 길인데 0.5더해서 1~3이라고 생각하면된다.
그 후 for문을 돌면서 사이에 있는것은 무시하고 만약 앞에서 했던 끝부분보다 뒤에 있는 곳이라면 start,end를 초기화 해주고 cnt를 1올려준다.
Author And Source
이 문제에 관하여(1449 : 수리공 항승), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@seochan99/1449-수리공-항승
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import sys
input =sys.stdin.readline
n,l = map(int,input().split())
places = list(map(int,input().split()))
places.sort()
start = places[0]
end = places[0]+l ; cnt=1
for place in places:
if end<=place: #사이에 있는 경우
start = place
end = place+l
cnt+=1
print(cnt)
n,l을 입력받고 places를 입력받고 정렬해준다.
그 이유는 위치를 오름 차순으로 봐야지 하나씩 넘어가며 체크가 가능하다
그 후 start,end 변수를 초기화하는데 start는 제일 앞부분 그리고 end는 start에서 테이프길이 만큼 더한 곳이다.
위치로부터 좌우 0.5씩 감아야하니깐 위치 한칸당 1의 테이프를 붙여야한다고 생각하면 된다
즉 1,2 위치를 막기 위해서는 2의 길이 테이프가 필요한데 붙여할 곳이 0.5~2.5인 2의 길인데 0.5더해서 1~3이라고 생각하면된다.
그 후 for문을 돌면서 사이에 있는것은 무시하고 만약 앞에서 했던 끝부분보다 뒤에 있는 곳이라면 start,end를 초기화 해주고 cnt를 1올려준다.
Author And Source
이 문제에 관하여(1449 : 수리공 항승), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seochan99/1449-수리공-항승저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)