알고리즘

[BOJ] 2748/2750

haesa_s 2021. 2. 1. 15:06

#2748: 피보나치 수 2

[문제]

 

[코드]

#include<stdio.h>

int main() {
	long long f1 = 0, f2 = 1, fn;
	int n;

	do{
		scanf("%d", &n);
	} while (n > 90);

    if(n < 2)
        printf("%d\n", n);
    else {
	    for (int i = 2; i <= n; i++) {
	    	fn = f1 + f2;
	    	f1 = f2;
	    	f2 = fn;
	    }
        printf("%lld\n", fn);
    }
		
	return 0;
}

 

[코드설명]

for문을 사용해서 피보나치 수를 구한 것이다. 이 코드를 처음 채점했을 때 해결하지 못 했는데 알고보니 90번째 피보나치 수까지 가다보면 숫자를 int로 표현하는데 한계가 있다는 것을 알아냈다. 그래서 자료형을 long long으로 바꾼 후 재채점했더니 해결할 수 있었다.

 

[채점 결과]

 

 

 

#2750: 수 정렬하기

[문제]

 

[코드]

#include<stdio.h>
int main()
{
	int sort[1000], n;
	int min;

	scanf("%d", &n);
	for (int i = 0; i < n; i++)
		scanf(" %d", &sort[i]);

	for (int i = 0; i < n - 1; i++)
	{
		for (int j = i + 1; j < n; j++)
			if (sort[i] > sort[j])
			{
				min = sort[j];
				sort[j] = sort[i];
				sort[i] = min;
			}
	}

	for (int i = 0; i < n; i++)
		printf("%d\n", sort[i]);

	return 0;
}

 

[코드설명]

정렬 알고리즘으로 해결할 수 있는 문제다. 나는 여러 정렬 알고리즘 중 선택 정렬을 이용해서 해결했다. 정렬하고 싶은 위치를 정해놓고 다른 원소들과 비교하여 앞에서부터  정렬해나가는 방식으로 풀었다.

 

[채점 결과]