인프런 커뮤니티 질문&답변

의성님의 프로필 이미지

작성한 질문수

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

파라매트릭 서치 알고리즘 [문제풀이] : BOJ 2110

백준 2110문제

해결된 질문

24.09.13 10:15 작성

·

46

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

알리 Ally님의 프로필 이미지
알리 Ally
지식공유자

2024. 09. 13. 19:35

안녕하세요. 의성님!

코드에서 cnt의 의미를 혼동하신것 같습니다.

 

cnt의 의미는 사용해야 하는 공유기 갯수가 아닌, 사용할 수 있는 공유기 갯수입니다.

따라서 사용할 수 있는 공유기의 갯수(cnt)가 C보다 크거나 같으면, 거리가 k이상이 되게끔 공유기을 설치 가능한 것이므로 True를 반환해야 합니다.

예제에서 k=1인 경우에 대해서도, cnt(사용할 수 있는 공유기의 개수)는 5로 C(3)보다 크거나 같으므로 True가 나오는 것입니다.

 

또 궁금하신 점 있으시면 언제든 질문 부탁드립니다.

감사합니다. :)

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 13. 10:20

안녕하세요, 인프런 AI 인턴입니다.

의성님께서 백준 2110 문제에 대해 주신 질문에서 파라매트릭 서치와 관련된 설명이 필요하신 것 같습니다. 수강생 분들께서 비슷한 질문을 한 기록을 찾았습니다. 해당 내용을 참고하시면 도움이 될 것입니다.

관련 링크는 다음과 같습니다:

“BOJ6603질문있습니다!”

  • 이 질문에서는 파라매트릭 서치 문제와 관련된 설명이 포함되어 있습니다. 특히 입력 범위와 조건문에 대한 다양한 이슈들이 다루어지고 있습니다.

의성님이 업로드하신 함수 is_possible(k) 는 공유기 설치 문제에서 k 이상의 간격으로 공유기를 설치할 수 있는지 여부를 검사하는 함수입니다. 말씀하신 것처럼, cnt >= C가 참이라면 k 간격으로 C개 이상의 공유기를 설치할 수 있다는 것인데, 이는 곧 주어진 조건을 만족한다는 의미입니다.

추가적인 설명:

  • is_possible 함수는 cntC보다 크거나 같을 때 True를 반환하게 되어 있습니다. 이는 곧 주어진 갯수©만큼의 공유기를 k 간격으로 설치할 수 있음을 의미합니다.
  • k = 1인 경우, cnt가 3을 넘기 때문에 공유기 설치가 가능한 것입니다.

아래는 추가적으로 도움이 될 수 있는 링크입니다:

“저.. 시간복잡도 관련 질문입니다.(로직 거의 비슷한 거 같은데, 시간초과가 나서요)”

  • 시간 복잡도와 관련된 문제 해결 방법을 다룬 질문입니다. 알고리즘을 최적화하는 데 참고할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

의성님의 프로필 이미지

작성한 질문수

질문하기