배열이 주어지면 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 해주었다.

검색좀 해보니 동적계획법을 이용해 푸는방법이 있는데, 다음번에 포스팅해야겠다..

+ Recent posts