1. 서론
어제에 이어 Java 레벨 테스트를 진행하였다.
진도가 느리더라도 매일매일 꾸준히 진행하려고 한다.
2. 문제
구름 다리를 건너는 토끼
토끼는 강을 건너기 위해 구름다리를 건너려고 한다.
구름다리의 발판에 적혀있는 숫자가 첫 번째부터 순서대로 들어있는 배열 steps가 매개변수로 주어질 때, 토끼가 구름다리를 모두 건너기 위해 필요한 점프 횟수를 반환해라.
문제 풀이
예를 들어, 1번째 칸이 숫자 2이면 2만큼 점프해서 3번째 칸으로 이동하고, 3번째 칸이 숫자 1이면 1만큼 점프해서 4번째 칸으로 가라는 식의 문제이다. 결국 밟은 칸의 숫자가 n이라면, 배열 + n으로 점프하고 그 배열값만큼 다시 점프해서 그렇게 마지막 배열이 실행될 때까지 점프한 횟수를 구하라는 것이다.
package elice;
import java.util.*;
public class Main {
static int crossBridge(int steps[]) {
int cnt = 0;
int current = 0;
int n = steps.length;
while (current < n) {
current += steps[current];
cnt += 1;
}
return cnt;
}
public static void main(String args[]) {
int stepCount;
int steps[];
int i;
Scanner scan = new Scanner(System.in);
stepCount = scan.nextInt();
steps = new int[stepCount];
for(i = 0; i < stepCount; i++)
{
steps[i] = scan.nextInt();
}
System.out.println(crossBridge(steps));
}
}
scanner로 입력 받은 배열을 crossBridge 함수의 매개변수로 보냈다.
cnt에 점프 횟수를, current에 현재 발판 위치를, n에 배열길이를 저장하였다.
current += steps[current]로 현재 위치가 steps의 배열 요소 즉, 발판 숫자의 값만큼 더해져서 배열의 인덱스를 점프할 수 있다. 다음으로 이동할 위치가 결정나게 된다.
'기타 > 엘카데미' 카테고리의 다른 글
[엘카데미 챌린지] 9일차 Java 레벨 테스트 (4) (0) | 2023.07.25 |
---|---|
[엘카데미 챌린지] 8일차 Java 레벨 테스트 (3) (0) | 2023.07.24 |
[엘카데미 챌린지] 6일차 Java 레벨 테스트 (1) (0) | 2023.07.22 |
[엘카데미 챌린지] 5일차 SQL 레벨 테스트 마무리 (0) | 2023.07.21 |
[엘카데미 챌린지] 4일차 SQL 레벨 테스트 (1) | 2023.07.20 |