본문 바로가기

잡다한 기술

[알고리즘]피보나치 수열의 짝수 합 구하기




# 문제


피보나치 배열은 0과 1로 시작하며, 

다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 된다. 

정수 N이 주어지면, N보다 작은 모든 짝수 피보나치 수의 합을 구하여라.


<예제>

Input: N = 12

Output: 10 // 0, 1, 2, 3, 5, 8 중 짝수인 2 + 8 = 10.


----------------------


시간 복잡도의 대한 언급이 없다.

간단하게 풀렸다. 

하지만, 나는 for문을 돌렸지만 다른 사람들은 While문을 돌렸다.

While문을 쓰는게 더 소스코드가 간소화 되어 보인다.

너무 for문만 쓰지 말고 While문도 사용해 봐야겠다.



# 메인 타이틀


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class HelloAlgorithm {
    public int Solution(int N){
        int preValue = 1;
        int tempValue = 1;
        int result = 0;
 
        // 피보나치 수열로 N의 값까지 반복문을 돌린다.
        for(int i = 1; i <= N; i = i + preValue){
            // 임시 저장한 이전값을 받아온다.
            preValue = tempValue;
 
            // 짝수일 경우 결과값의 합 연산을 진행
            if((i % 2== 0){
                result += i;
            }
            
            // 이전값을 임시 저장한다.
            tempValue = i;
        }
 
        return result;
    }
 
    public static void main(String[] args){
        HelloAlgorithm TempClass = new HelloAlgorithm();
        System.out.println(TempClass.Solution(89));
    }
}
cs


# 마무리


위 포스트는 제가 직접 제작한 것 입니다.

그렇기 때문에 틀린점이나 설명이 엉성한 점이 존재할 수 있습니다.

만약 틀린점이나 설명이 엉성한 부분이 존재하면 댓글로 알려주세요.

빠른 처리 하도록 하겠습니다.


티스토리 앱으로는 댓글 이용이 불가능 하므로 웹 브라우저로 봐 주세요

(URL : http://junprogramer.tistory.com/)


읽어주셔서 감사합니다.