프로젝트 오일러 도전기 #2 (with 파이썬 프로그래밍공부)
문제
Even Fibonacci numbers
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
피보나치 수열에서 4백만 이하이면서 짝수인 항의 합
피보나치(Fibonacci) 수열의 각 항은 바로 앞의 항 두 개를 더한 것입니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 얼마가 됩니까?
피보나치는 An + An+1 = An+2 의 형태로 계속되는 무한수열인데
이론은 관심도 없고 중요하지 않다
접근아이디어
이번 문제는 a + b = c 의 형태가 계속 반복된다
즉 while 문이나 for 문을 통해서 접근하는게 바람직해 보인다
범위가 지정되있으나 변수가 계속 변하니 while 문으로 조건에 도달하면 break를 넣어주게 한다.
1 2 3 | >>> while 1 : ... if c>4000000: ... break | cs |
while 1 : 구문은 무한반복 구문으로 파이썬에서 애용되는 구문이다
break 를 넣어주지 않으면 계속 돌아가니 주의하자
짝수는 2로 나눴을때 나머지가 0이 되는 숫자이므로
1편에서 배운 %를 활용한다
1 | if i%2 == 0 : | cs |
필요한 변수는 3개이므로
a=1
b=2
c=3
으로 초기에 잡아주고
답을 저장해놓을 변수를 하나 추가해준다
남은건 문구 조립
a+b=c 를 while 문안에 넣어주고
if 문으로 c를 체크해주고
통과한 c 를 추가해준다
1 2 3 4 5 | >>> while 1 : ... c=a+b ... if c%2==0: ... answer+=c ... b,a= c,b | cs |
그런데...
또 틀렸다...
가만 생각해보니 피보나치 시작인 1 2 3중에 2를 더하지 않은거같다...
정답에 2를 더해주니
클리어
댓글
댓글 쓰기