No. 2908

#include<stdio.h>
int reverse(n);
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	if (reverse(a) > reverse(b)) {
		printf("%d", reverse(a));
	}
	else {
		printf("%d", reverse(b));
	}
}
int reverse(n) {
	int r = 0;
	while (n) {
		r = (r * 10) + (n % 10);
		n = n / 10;
	}
	return r;
}

코드 설명 : 두 수 a, b를 입력 받고 reverse라는 함수를 만들어 a, b를 인자로 넣어주었다. reverse 함수는 r에 r*10 + n%10을 저장해주고 이 과정을 n번 반복시켜주었다. 이 함수를 통해 숫자를 뒤집어서 반환할 수 있다. reverse(a)와 reverse(b)를 비교하여 더 큰 것을 출력하도록 했다.

 

 

No. 2920

#include<stdio.h>
int main()
{
	int arr[9], a = 1, d = 8;
	for (int i = 0; i < 8; i++) {
		scanf("%d", &arr[i]);
	}
	for (int i = 0; i < 8; i++) {
		if (arr[i] == a){
			a++;
		}
	}
 	if (a > 8) {
		printf("ascending");
		return 0;
	}
	else {
		for (int i = 0; i < 8; i++) {
			if (arr[i] == d){
				d--;
			}
		}
		if (d < 1) {
			printf("descending");
			return 0;
		}
		else printf("mixed");
	}
	
}

코드 설명 : 8개의 숫자를 입력받고 그 수가 ascending인지 판별하기 위해 a라는 변수를 만들어 입력받은 원소가 차례대로 1부터 1씩 증가하는지 확인하도록 하였다. 그래서 최종적으로 a가 8보다 커지면 ascending에 해당하므로 이를 출력하도록 했다. 이에 해당하지 않는다면 이번에는 d라는 변수를 만들어 8부터 차례대로 1씩 감소하는지 확인하도록 하였다. 최종적으로 d가 1보다 작아진다면 descending에 해당하므로 이를 출력하도록 하였다. 앞에 두 경우에 모두 해당하지 않는다면 mixed를 출력하도록 하였다.

 

 

 

No. 3052

#include<stdio.h>
int main()
{
	int i, n, arr[42] = { 0 }, cnt = 0;
	for (i = 0; i < 10; i++) {
		scanf("%d", &n);
		n = n % 42;
		arr[n]++;
	}
	for (i = 0; i < 42; i++) {
		if (arr[i] >= 1) {
			cnt++;
		}
	}
	printf("%d", cnt);
}

코드 설명 : 배열 arr[42]의 모든 원소를 0으로 초기화해주었다. 10개의 수 n을 입력받아 각자 42로 나눈 나머지를 저장하고 arr 배열의 n번째 원소에 1씩 추가해주었다. 이 배열의 모든 원소를 for문으로 모두 확인하도록 하였다. 원소가 1보다 크거나 같으면 cnt값을 증가시켜주었다. 이는 서로 다른 값이 몇 개 있는지를 알기 위함이다. 그리고 마지막에 cnt값을 출력시켜주었다.

+ Recent posts