│문제
│풀이 (Python)
n=int(input())
a,b=0,1
while True:
if n==0:
break
tmp=a
a=a+b
b=tmp
n-=1
print(a)
│풀이 (C언어)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int n = 0;
scanf("%d", &n);
int a = 0;
int b = 1;
int tmp = 0;
while (1)
{
if (n == 0) break;
tmp = a;
a = a + b;
b = tmp;
n -= 1;
}
printf("%d", a);
return 0;
}
│설명 (Python / C언어 )
피보나치 수는 수열에 관한 문제일 때 어김없이 등장하는 문제 중 하나이다.
keypoint 1- n번 반복해야 할 때 증가보단 감소를 택하자.
n번반복 후 재귀함수 또는 반복문이 종료가 되어야 할 때 n번부터 0까지 1씩 감소하는 로직이 훨씬 직관적이고 풀이에도 쉽다.
ex)
1) 2)
n=0 n=17
while true: while true:
if n==17:break if n==0:break
n++; n--;
1번과 같이 보다 2번으로 작성하다 보면 종료조건에서 훨씬 수월하게 풀리는 경우들이 많다.
'Baekjoon' 카테고리의 다른 글
[백준] 10866번 덱 ( 파이썬 / c언어 ) (0) | 2023.07.24 |
---|---|
[백준] 2751번 수 정렬하기 2 ( 파이썬/ c언어 ) (1) | 2023.07.18 |
[백준] 10845번 큐 ( 파이썬 / c언어) (0) | 2023.07.16 |
[백준] 1874번 스택 수열 (파이썬) (0) | 2023.07.15 |
[백준] 1920번 수 찾기 ( 파이썬 / c언어) (0) | 2023.07.14 |