프로그래머스 LEVEL 3(징검다리 건너기)
-
사용 언어 : javascript
-
해결 날짜 : 2022-12-24
-
해결 방법 :
- 이분탐색을 통해 문제 해결
- 이분탐색의 범위는 1 ~ 200000000
- 이분탐색을 수행하며 mid 보다 작은 디딤돌 값이 k개 이상이면(건널 수 없는 경우) mid의 왼쪽 탐색
- 그 외의 경우(건널 수 있는 경우) mid의 오른쪽 탐색
- 이분탐색을 통해 문제 해결
-
회고 :
- x
-
코드
function solution(stones, k) { let left = 1, right = 200000000; const isLeft = (mid) => { let count = 0; for (let i = 0; i < stones.length; i++) { count = stones[i] <= mid ? count + 1 : 0; if (count === k) return true; } return false; }; while (left <= right) { const mid = Math.ceil((left + right) / 2); if (isLeft(mid)) right = mid - 1; else left = mid + 1; } return left; }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges