배열이 주어지면 0 으로만 점프할 수 있으며, 최대 i+2인덱스 씩 점프가 가능하다.
만약 i+2번째 인덱스의 숫자가 1이라면 i+1번째 인덱스로 점프해야 한다.
배열의 마지막 인덱스까지의 최소 점프 횟수를 구하는 문제.
static int jumpingOnClouds(int[] c) {
int jumping = 0;
int i = 0;
try{
while(true){
if(i+1 >= c.length) break;
if(c[i+2] == 0){
jumping++;
i+=2;
}else{
jumping++;
i++;
}
}
}catch(java.lang.ArrayIndexOutOfBoundsException e){
jumping++;
}
return jumping;
}
편법이다..
ArrayIndexOutOfBoundsException이 발생하는 Case가 있기때문에 해당 Exception발생시, 점프횟수를 +1 해주었다.
검색좀 해보니 동적계획법을 이용해 푸는방법이 있는데, 다음번에 포스팅해야겠다..
'코딩테스트' 카테고리의 다른 글
[Java]해커랭크 - Two Strings (0) | 2020.02.26 |
---|---|
[Java]해커랭크 - Hash Tables: Ransom Note (0) | 2020.02.26 |
[Java]해커랭크 - Minimum Absolute Difference in an Array (0) | 2020.02.26 |
[Java]해커랭크 - Repeated String (0) | 2020.02.26 |
[Java]해커랭크 - Sock Merchant (0) | 2020.02.24 |