징검다리 건너기
210706
'''
https://programmers.co.kr/learn/courses/30/lessons/12938
징검다리 건너기
[풀이]
0. 이진탐색 문제
=> 하지만 이진탐색문제인지 몰랐다. 한참을 고민해도 몰랐음. 결국 참고.
1. 건너뛰어야 하는 돌의 개수가 k개 이하
=> n명이 이미 지나갔고, 돌에 적혀있는 수가 n이하
=> n이하의 수를 가진 돌이 연속적으로 k개 이하로 두어져 있어야 함
2. 이 n을 이진탐색으로 1 to max(stones) 범위에서 찾는다.
=> mid는 둘의 사이
=> dist는 mid보다 작은 수를 지닌 연속적으로 이어지는 돌의 개수
=> answer은 기본 1 (돌다리가 최소 하나이므로 하나는 무조건 건널 수 있음)
3. for-else continue를 이용해서 break시에 두 가지 흐름도를 설정
'''
def solution(stones, k):
left, right = 1, max(stones)
answer = 1
while left <= right:
mid = (left + right) // 2
dist = 0
for stone in stones:
if stone < mid:
dist += 1
else:
dist = 0
if dist == k:
break
else:
answer = max(answer, mid)
left = mid + 1
continue
right = mid - 1
return answer
'''
'''
Last updated
Was this helpful?