Lewis's Tech Keep
[프로그래머스] 징검다리 건너기 - Java 본문
- 링크 : https://programmers.co.kr/learn/courses/30/lessons/64062?language=java
코딩테스트 연습 - 징검다리 건너기
[2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3
programmers.co.kr
- 참고 링크 : https://kyu9341.github.io/algorithm/2020/05/08/programmers_64062/
프로그래머스 - 징검다리 건너기 - kwon | kwon's Blog
프로그래머스 - 징검다리 건너기 징검다리 건너기 문제 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 니니즈 친구들이 라이언 선생님과 함께 가을 소풍
kyu9341.github.io
- 풀이
: 이분 탐색, 파라 메트릭 서치를 이용했다.
: 어떤 최대로 뛸 수 있는 값을 n이라고 한다면 이 n을 배열에서 모두 뺀 값을 비교 하면서 연속으로 0이하 인 값이 k 개 이상이면 뛸 수 있다. yes
: k 개미만이라면 뛸 수 없다. no
: 따라서 결정 문제이다.
결정 문제란?
더보기
결정 문제란?
예를 들어 x에 대하여 y로 나누어 떨어지는가? 를 물었을 때
yes or no로 결정될 수 있는 문제
- 답
더보기
class Solution {
public int solution(int[] stones, int k) {
int left = 0;
int right = 200_000_000;
int answer = right;
// 건널 수 있다.
// 다 뺀 후에 연속된 0 이하 숫자 사람이 k 이상이면 가능
while (left <= right) {
int mid = (left + right) / 2;
int[] checkstones = new int[stones.length];
int count = 0;
boolean isPossible = false;
for (int i=0; i < stones.length; i++) {
checkstones[i] = stones[i] - mid;
if (checkstones[i] <= 0) {
count++;
} else {
count = 0;
}
if (count >= k) {
isPossible = true;
break;
}
}
if (isPossible) {
answer = Math.min(mid, answer);
right = mid - 1;
} else {
left = mid + 1;
}
}
return answer;
}
}
'Java > 알고리즘' 카테고리의 다른 글
[프로그래머스] 외벽 점검 - JAVA (0) | 2021.10.06 |
---|---|
[프로그래머스] 최소직사각형 - Java (0) | 2021.10.05 |
[프로그래머스] 금과 은 운반하기 - JAVA (0) | 2021.09.27 |
[프로그래머스] 입실 퇴실 - Java (0) | 2021.09.24 |
[BOJ] 비트 우정지수 - JAVA (0) | 2021.09.13 |