코딩테스트(Level 2)

[JAVA, Programmers] 멀리 뛰기(자바)

justdoIT0730 2023. 1. 7. 20:00
728x90
728x90

1. 문제 설명

 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1, 또는 2칸을 있습니다. 칸이 4 있을 , 효진이는

 

(1, 1, 1, 1)

 

(1, 2, 1)
(1, 1, 2)

(2, 1, 1)

 

(2, 2)

 

5가지 방법으로 칸에 도달할 있습니다. 멀리뛰기에 사용될 칸의 n 주어질 , 효진이가 끝에 도달하는 방법이 가지인지 알아내, 여기에 1234567 나눈 나머지를 리턴하는 함수, solution 완성하세요. 예를 들어 4 입력된다면, 5 return하면 됩니다.

 

2. 제한 사항

n 1 이상, 2000 이하인 정수입니다.

 

3. 입출력

n result
4 5
3 3

 

4. 입출력 설명

- 입출력 #1
위에서 설명한 내용과 같습니다.

 

- 입출력 #2
(2, 1)
(1, 2)
(1, 1, 1)
3가지 방법으로 멀리 있습니다.

 

5. 풀이

class Solution {
    public long solution(int n) {
        int [] a = new int [2001];
        a[0]=1; a[1]=2;
        for(int i =2; i<=n; i++) {
            a[i] = (a[i-2]+ a[i-1])%1234567;
        }
        return (a[n-1]);
    }
}

 

 패턴을 몇 번 풀이해보니,, 피보나치 수열이었고,, 

1 2 3 5 8 13 ...

그냥 예전에 풀이했던 피보나치 수 문제에서 인덱스만 바꿨다

1부터 시작하여 n번째 피보나치수를 구하면,,, 되었다.. 

 

더보기

왜 애초에 사용하지 않아도 될 answer 를 long으로 제시했을까 의문

class Solution {
    public long solution(int n) {
        long answer = 0;
        return answer;
    }
}

 

728x90
728x90