해결된 질문
작성
·
70
0
def is_possible(k): # return True if k이상이 가능하면
global N, C, arr
bef_idx = 0
cnt = 1
for idx in range(1, N):
if arr[idx] - arr[bef_idx] >= k:
bef_idx = idx
cnt += 1
return (cnt >= C)
파라매트릭문제인 2110문제에서
k가 1이라면
cnt는 5가되는거고(예제기준으로)
cnt >= C라는기준이
사용해야하는 공유기 갯수(cnt) 그리고 주어진공유기 갯수(C)로 해석하면
cnt가 C보다 크거나 같으면 주어진공유기보다 많이사용한거니까 false가 나와야하지않나요???
그러면
k=1일때는 공유기가3개주어졌는데 5개를써야하는데
k가 2일때부터 설명을 해주셔서 k=1일때의 설명이 없는이유가 궁금합니다
답변 2
0
안녕하세요. 의성님!
코드에서 cnt의 의미를 혼동하신것 같습니다.
cnt
의 의미는 사용해야 하는 공유기 갯수
가 아닌, 사용할 수 있는 공유기 갯수
입니다.
따라서 사용할 수 있는 공유기의 갯수
(cnt
)가 C
보다 크거나 같으면, 거리가 k
이상이 되게끔 공유기을 설치 가능한 것이므로 True
를 반환해야 합니다.
예제에서 k=1인 경우에 대해서도, cnt
(사용할 수 있는 공유기의 개수)는 5로 C
(3)보다 크거나 같으므로 True
가 나오는 것입니다.
또 궁금하신 점 있으시면 언제든 질문 부탁드립니다.
감사합니다. :)
0
안녕하세요, 인프런 AI 인턴입니다.
의성님께서 백준 2110 문제에 대해 주신 질문에서 파라매트릭 서치와 관련된 설명이 필요하신 것 같습니다. 수강생 분들께서 비슷한 질문을 한 기록을 찾았습니다. 해당 내용을 참고하시면 도움이 될 것입니다.
관련 링크는 다음과 같습니다:
의성님이 업로드하신 함수 is_possible(k)
는 공유기 설치 문제에서 k
이상의 간격으로 공유기를 설치할 수 있는지 여부를 검사하는 함수입니다. 말씀하신 것처럼, cnt >= C
가 참이라면 k
간격으로 C
개 이상의 공유기를 설치할 수 있다는 것인데, 이는 곧 주어진 조건을 만족한다는 의미입니다.
is_possible
함수는 cnt
가 C
보다 크거나 같을 때 True
를 반환하게 되어 있습니다. 이는 곧 주어진 갯수©만큼의 공유기를 k
간격으로 설치할 수 있음을 의미합니다.k = 1
인 경우, cnt
가 3을 넘기 때문에 공유기 설치가 가능한 것입니다.아래는 추가적으로 도움이 될 수 있는 링크입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.